Как увидеть имя хоста экземпляра, который сгенерировал данные для Pushgateway

#prometheus #grafana #prometheus-pushgateway

Вопрос:

У меня есть сервер prometheus, который использует самостоятельное обнаружение для виртуальных машин Azure, на которых работает экспортер WMI. В Grafana я использую переменные панели мониторинга для фильтрации (см. скриншот).

На виртуальных машинах я создал пользовательский экспортер, который выводит метрику со значением 1 для каждого сервера, и каждый сервер отправляет значения в один Pushgateway, настроенный в etc/prometheus/prometheus.yaml

 - job_name: 'push-gateway'
  static_configs:
  - targets: ['localhost:9091']
 

Когда я смотрю на очищенные показатели, я всегда вижу экземпляр: localhost:9091 и задание: push-шлюз, независимо от сервера, с которого была получена метрика. Если я добавлю эти метки вручную, я увижу префикс «экспортированный» (см. Скриншот).

Что меня смущает, так это то, как я могу гарантировать, что «задание» и «экземпляр» для специально созданной метрики имеют одинаковые значения «задание» и «экземпляр», соответствующие серверу, который сгенерировал метрики, чтобы я мог использовать переменные панели мониторинга для извлечения правильных данных для выбранного сервера?

введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Вы можете использовать metric_relabel_configs для перезаписи меток после очистки. Пример:

 - job_name: pushgateway
  # This is necessary if metrics in pushgateway have "job" or "instance" labels.
  # With "honor_labels: true" Prometheus will save those as "exported_job" and "exported_instance" respectively.
  honor_labels: true
  static_configs:
  - targets:
    - my-pushgateway.com:9091
  metric_relabel_configs:
  # copy pushgateway address from "instance" to "source" label
  - source_labels: [instance]
    target_label: source

  # replace "instance" label value with one from "exported_instance" label
  - source_labels: [exported_instance]
    target_label: instance

  # remove "exported_instance" label
  - source_labels: [exported_instance]
    action: labeldrop
 

Если у вас раньше были такие показатели, как этот:

 my_metric{job="pushgateway", instance="my-pushgateway.com:9091", exported_instance="example.com"}
 

тогда с конфигурацией из приведенного выше примера они будут выглядеть так:

 my_metric{job="pushgateway", instance="example.com", source="my-pushgateway.com:9091"}