Адаптер Prometheus — не удается получить данные из внешних показателей

#kubernetes #rabbitmq #prometheus #kubernetes-helm

#kubernetes #rabbitmq #prometheus #kubernetes-helm

Вопрос:

Я не могу извлекать элементы, выполнив эту команду: kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready" | jq

Как вы можете видеть в приведенных ниже выходных элементах, это пустой массив:

 {
  "kind": "ExternalMetricValueList",
  "apiVersion": "external.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
  },
  "items": []
}
  

Тем не менее, я получаю правильные данные в конечной точке prometheus:
URL Prometheus: http://<prometheus_url>:9090/api/v1/series?match[]={__name__=~»^rabbitmq_queue_.*»}amp;start=1597255421.51
Ответ:

 {
"status":"success",
"data":[
    {
        "__name__":"rabbitmq_queue_messages_ready",
        "app":"prometheus-rabbitmq-exporter",
        "durable":"true",
        "instance":"10.2.0.73:9419",
        "job":"kubernetes-pods",
        "namespace":"default",
        "pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
        "pod_template_hash":"754c845847",
        "queue":"test",
        "release":"rabbitmq-exporter",
        "vhost":"/"
    },
    {
        "__name__":"rabbitmq_queue_messages_ready",
        "app":"prometheus-rabbitmq-exporter",
        "durable":"true",
        "instance":"10.2.0.73:9419",
        "job":"kubernetes-pods",
        "namespace":"default",
        "pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
        "pod_template_hash":"754c845847",
        "queue":"test1",
        "release":"rabbitmq-exporter",
        "vhost":"/"
    }
]
}
  

Я установил, stable/prometheus-adapter используя приведенные ниже значения helm:

 rules:
  default: false
  external:
    - seriesQuery: '{__name__=~"^rabbitmq_queue_.*"}'
      resources:
        #template: <<.Resource>>
        overrides:
          namespace:
            resource: namespace
          service:
            resource: service
          pod:
            resource: pod
      name:
        matches: ""
        as: "rabbitmq_queue_messages_ready"
      metricsQuery: 'rate(<<.Series>>{<<.LabelMatchers>>}[1m])'
  

Версии Helm и Kubernetes:

Клиент: и версия.Версия{SemVer: «v2.16.9», GitCommit: «8ad7037828e5a0fca1009dabe290130da6368e39», GitTreeState: «чистый»} Сервер: amp;версия.Версия{SemVer: «v2.16.7», GitCommit: «5f2584fd3d35552c4af26036f0c464191287986b», GitTreeState: «чистый»}

Версия клиента: version.Info{Major: «1», Minor: «16», GitVersion: «v1.16.1», GitCommit: «d647ddbd755faf07169599a625faf302ffc34458», GitTreeState: «чистый», BuildDate: «2019-10-02T17:01:15Z», GoVersion: «go1.12.10», Компилятор: «gc», Платформа: «darwin/amd64»} Версия сервера: version.Info{Major: «1», Minor: «15», GitVersion: «v1.15.11», GitCommit: «ec831747a3a5896dbdf53f259eafea2a2595217c», GitTreeState: «чистый», BuildDate: «2020-05-29T19:56:10Z», GoVersion: «go1.12.17», Компилятор: «gc», Платформа: «linux /amd64»}

Ожидаемый результат: он должен извлекать показатели из Prometheus

Как это воспроизвести: Установите stable/prometheus-rabbitmq-exporter и stable/prometheus-adapter запустите диаграммы, используя приведенные выше конфигурации.

Я следую этому руководству: https://nuvalence.io/building-a-k8s-autoscaler-with-custom-metrics /

Комментарии:

1. Просто для уточнения, вы используете какого-либо облачного провайдера или его локальную среду?

2. @PjoterS Я использую AKS

Ответ №1:

Для дальнейшего устранения вашей проблемы в первую очередь я бы проверил пару вещей в настройках вашего prom-адаптера:

  1. Видите ли вы какие-либо ошибки в журналах адаптера Prometheus при получении показателей напрямую с помощью "kubectl get --raw ..." команды?
  2. В какое пространство имен вы установили свой prometheus-adapter ? (спрашиваю, потому что раньше я наблюдал ошибки, связанные с RBAC, в журналах адаптера при развертывании на другой ns, отличной от «kube-system»)
  3. Не могли бы вы, пожалуйста, вставить содержимое вашей окончательной /etc/adapter/config.yaml конфигурации prom-adapter (из модуля prom-adapter)

Я без проблем предоставляю те же внешние показатели rabbitmq с адаптером, проверьте вывод из той же команды:

 {
  "kind": "ExternalMetricValueList",
  "apiVersion": "external.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
  },
  "items": [
    {
      "metricName": "rabbitmq_queue_messages_ready",
      "metricLabels": {
        "endpoint": "metrics",
        "instance": "10.64.1.97:9419",
        "job": "rabbitmq",
        "namespace": "default",
        "pod": "rabbitmq-0",
        "service": "rabbitmq"
      },
      "timestamp": "2020-08-13T23:50:29Z",
      "value": "174160m"
    }
  ]
}
  

Используемая версия prom-адаптера: directxman12/k8s-prometheus-adapter-amd64:v0.6.0

// Для большей наглядности (форматирование фрагментов кода и т.д.) использую сообщение сообщества wiki.)

Комментарии:

1. Спасибо за ваш подробный ответ по устранению неполадок. Я обнаружил, что использую prometheus-adapter with kube-metrics-adapter . Я удалил kube-metrics-adapter , и это сработало.