Как мы можем добавить дополнительную метку к метрикам Prometheus?
Предположим, что мы собираем одни и те же метрики в течение одного месяца, и теперь мы хотим изменить метрики, чтобы иметь дополнительную метку (также в старых данных), как мы можем это сделать. Существующая метрика:
mongodb_exporter_last_scrape_duration_seconds{instance="127.0.0.1:9216",job="mongo"}
Хотите изменить это на:
mongodb_exporter_last_scrape_duration_seconds{cluster="stage", instance="127.0.0.1:9216",job="mongo"}
5 ответов
- job_name: 'your_job'
honor_labels: true
static_configs:
- targets:
- '127.0.0.1'
labels:
cluster: 'stage'
К сожалению, в Prometheus невозможно изменить метки старых метрик.
Хранилище обновляется только новыми царапинами, после чего оно становится неизменным.
если у вас есть конфигурация обнаружения службы, вы также можете добавить метки в relabels_config
relabel_configs:
- target_label: cluster
replacement: stage
Prometheus не предоставляет возможности добавлять новые метки к историческим временным рядам. Но можно добавить недостающие метки во время запросов с помощью функции label_replace() :
label_replace(
mongodb_exporter_last_scrape_duration_seconds,
"cluster",
"staging",
"cluster",
""
)
Этот
label_replace()
вызов добавляет
cluster="staging"
маркировать только в том случае, если
cluster
метка отсутствует в исходном временном ряду, выбранном с помощью
mongodb_exporter_last_scrape_duration_seconds
селектор серии .
https://prometheus.io/docs/prometheus/latest/querying/functions/#label_replacehttps://medium.com/@texasdave2/replace-and-remove-a-label-in-a-prometheus-query-9500faa302f0
Фактически, метод label_replace только добавляет новую метку к показателям, но не заменяет ее. Таким образом, я могу использовать этот метод для добавления новой метки, если вы не хотите изменять конфигурацию prometheus.yml.
Для вашего случая:
mongodb_exporter_last_scrape_duration_seconds{instance="127.0.0.1:9216",job="mongo"}
label_replace(mongodb_exporter_last_scrape_duration_seconds{instance="127.0.0.1:9216",job="mongo"}, "cluster", "stage", "(.*)")