Prometheus: prometheus_replica и дублирование метрик

Автор: | 04/08/2021

После запуска Prometheus в виде трёх подов, см. Prometheus: ошибки «federation failed: broken pipe» и «Received SIGTERM, exiting gracefully» — постоянные рестарты – метрики начали дублироваться:

Одна метрика получена от инстанса prometheus_replica="prometheus-prometheus-prometheus-oper-prometheus-1", вторая – от prometheus_replica="prometheus-prometheus-prometheus-oper-prometheus-2", так как запущено три пода:

[simterm]

$ kubectl -n monitoring get pod | grep oper-prometheus
prometheus-prometheus-prometheus-oper-prometheus-0     3/3     Running   1          2m50s
prometheus-prometheus-prometheus-oper-prometheus-1     3/3     Running   1          3m40s
prometheus-prometheus-prometheus-oper-prometheus-2     3/3     Running   0          3m40s

[/simterm]

И в Grafana потом неправильно рисуются графики – вместо одного получаем три:

Для решения – уберём добавление лейбл prometheus и prometheus_replica вообще.

В values.yaml нашлись две опции – replicaExternalLabelNameClear и prometheusExternalLabelNameClear:

...
    ## Name of the external label used to denote replica name
    ##
    replicaExternalLabelName: ""

    ## If true, the Operator won't add the external label used to denote replica name
    ##
    replicaExternalLabelNameClear: false

    ## Name of the external label used to denote Prometheus instance name
    ##
    prometheusExternalLabelName: ""

    ## If true, the Operator won't add the external label used to denote Prometheus instance name
    ##
    prometheusExternalLabelNameClear: false
...

Добавляем их в Helm-чарт в блок prometheusSpec:

Деплоим, и теперь получаем метрики из одного источника, и лейблы prometheus_replica больше нет:

В Grafana теперь графики тоже отображаются корректно:

Готово.