Как работать с метками "prometheus" и "prometheus_replica"?

В иерархической федеративной установке prometheus с моделью Pull для метрик я вижу метки "prometheus" и "prometheus_replica" в захваченных метриках. Система отслеживает развертывание StatefulSet в Kubernetes.

При запросе или предупреждении я вижу дубликаты данных, включенные из-за этих меток, т.е. я вижу метрику с этими метками, а также без них. Эффективно вызывая неправильные подсчеты и предупреждения.

Я вижу метки "prometheus" и "prometheus_replica", используемые в запросах к prometheus, который извлекает метрики из объединенной конечной точки.

Я использую ServiceMonitor с оператором Prometheus на каждом кластере кубов. Все показатели объединены в один и тот же Прометей, где эта проблема видна.

Есть ли документация о том, как эти ярлыки генерируются? Являются ли эти метрики дублирующимися или игнорируемыми?

4 ответа

Решение

Наконец-то я обнаружил, что эти ярлыки исходят от оператора Прометея. Он был добавлен для требования, которое не написано ни в каких документах. Я вижу, что это не работает в версии 0.17. Работает в 0.23 версии оператора.

Я тоже столкнулся с этой проблемой, просто добавив для всех, кто попадает в этот комментарий, параметры конфигурации, которые влияют на это, в соответствии с документацией здесь https://github.com/prometheus-operator/prometheus-operator/blob/ca400fdc3edd0af0df896a338eca270e115b74d7/Documentation/api.md#prometheusspec. ссылка на код здесь https://github.com/prometheus-operator/prometheus-operator/blob/ca400fdc3edd0af0df896a338eca270e115b74d7/pkg/prometheus/promcfg.go#L95-L132

replicaExternalLabelName: имя внешней метки Prometheus, используемой для обозначения имени реплики. По умолчанию используется значение prometheus_replica. Внешняя метка не будет добавлена, если в качестве значения задана пустая строка ("").
prometheusExternalLabelName: имя внешней метки Prometheus, используемой для обозначения имени экземпляра Prometheus. По умолчанию значение prometheus. Внешняя метка не будет добавлена, если в качестве значения задана пустая строка ("").

Поэтому, если вы хотите удалить эти дубликаты, просто установите для этих параметров пустые строки в пользовательском ресурсе Prometheus в вашем кластере.

Для тех, кто использует kube-prometheus-stack, это очень полезно — https://github.com/prometheus-operator/prometheus-operator/issues/455#issuecomment-1367809401 .

ИспользоватьreplicaExternalLabelName: "__replica__"и он добавит динамическую внешнюю метку на основе имени модуля. У меня также установлен Mimir, и он ссылается на внешние метки как:

      config: |
    limits:
      ha_cluster_label: cluster
      ha_replica_label: __replica__

Если вы используете управляющую диаграмму kube-prometheus-stack, вы можете установить следующие параметры:

Они устанавливают значения меток на""под капотом.

Можно проверить эти значения из пользовательского интерфейса.YOUR_PROM_URL/configпосмотри наglobal.external_labels

Другие вопросы по тегам