#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"}