Как работать с метками "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, вы можете установить следующие параметры:
prometheus.prometheusSpec.replicaExternalLabelNameClear: true
удаляетprometheus_replica
этикеткаprometheus.prometheusSpec.prometheusExternalLabelNameClear: true
удаленныйprometheus
Они устанавливают значения меток на""
под капотом.
Можно проверить эти значения из пользовательского интерфейса.YOUR_PROM_URL/config
посмотри наglobal.external_labels