Добавьте ПодМонитор или сервисмонитор за пределами значений руля kube-prometheus-стека

#prometheus-operator #kube-prometheus-stack #podmonitor #servicemonitor

Вопрос:

Использование диаграммы управления кубом-прометеем-стеком, версия 16.10.0. До сих пор я добавлял свои пользовательские PrometheusRules PodMonitor и ServiceMonitor пользовательские значения через helm.

 helm install my-kubpromstack prometheus-community/kube-prometheus-stack -n monitoring 
  -f my-AlertRules.yaml 
  -f my-PodMonitor.yaml
 

Или в случае изменений в PrometheusRules операционной PodMonitor , которую я использую helm upgrade . Пользовательские значения определяются на основе kube-prometheus-stack/values.yaml. Где я определяю prometheus.additionalPodMonitors и additionalPrometheusRulesMap в отдельных файлах YAML

 helm upgrade my-kubpromstack -n monitoring 
  --reuse-values 
  -f my-AlertRules.yaml 
  -f my-PodMonitor.yaml
 

ВОПРОС: как сделать сервер Prometheus kube-prometheus-stack осведомленным о правилах, подмониторе, сервисмониторе, созданных вне значений helm?

Например, PodMonitor приведенное ниже определение НЕ подхватывается Prometheus (т. Е. Не отображается в целях в пользовательском интерфейсе Prometheus).

 kubectl apply -f - << EOF
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: cluster-operator-metrics
  labels:
    app: strimzi
spec:
  selector:
    matchLabels:
      strimzi.io/kind: cluster-operator
  namespaceSelector:
    matchNames:
      - my-strimzi
  podMetricsEndpoints:
  - path: /metrics
    port: http
EOF
 

Модуль для мониторинга имеет метку strimzi.io/kind: cluster-operator и расположен в my-strimzi пространстве имен. Я бы ожидал podmonitor , что все вышесказанное будет распознано Прометеем автоматически. Потому что подМониторСелектор по умолчанию: {} в кубе-прометей-стек/значения.у yaml есть комментарий, в котором говорится:

     ## PodMonitors to be selected for target discovery.
    ## If {}, select all PodMonitors
 

Комментарии:

1. не могли бы вы поделиться ссылкой на репозиторий, если она у вас работает? Я застрял почти на две недели из — за одной и той же проблемы-метрики Стримзи в Prometheus с использованием диаграммы управления кубом-прометеем-стеком.

2. Извините, частный проект. Однако я добавил дополнительный ответ ниже, чтобы показать рабочий пример. Удачи

3. Не беспокойтесь, ответ @aris помог мне решить эту проблему после 15 минут комментариев для репозитория. Кстати, я реализовал и протолкнул в репозиторий .

Ответ №1:

Если вы определяете prometheus.prometheusSpec.podMonitorSelectorNilUseHelmValues как false values.yaml , true по умолчанию установлено значение), вы можете достичь своей цели. Как и значение true , оно просто попытается установить release метку для сопоставления PodMonitor , которую ваше собственное определение не включает.

Или вы можете оставить его как true есть и установить prometheus.prometheusSpec.podMonitorSelector как:

 matchLabels:
  prometheus: "true"
 

И добавьте ярлык prometheus: "true" в свой podmonitor.yaml .

Нажмите здесь, чтобы проверить код, если вас интересуют подробности.

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

Комментарии:

1. Экспертный ответ спасибо. Подтвердит, когда я возобновлю работу над этим проектом на следующей неделе. Я предполагаю, что комментарий в kube-prometheus-stack/values.yam, podMonitorSelector неверен.

2. Подтвердил, что ваше предложение работает. Большое спасибо. Тот же принцип для PrometheusRule установки пользовательской метки для prometheus.prometheusSpec.ruleSelector.matchLabels

3. @Polymerase Да, я думаю, что некоторые комментарии в значениях. yaml немного устарел — при необходимости прочитайте логику в файлах шаблонов вместо этого 🙂

Ответ №2:

Добавьте этот ответ, чтобы ответить на вопрос, заданный комментатором в OP. Вот определение подмонитора, которое я использовал пользовательские значения kube-prometheus-stack руля для диаграммы руля, чтобы оператор Prometheus обнаружил модуль в качестве цели. Главное — это этикетка app: strimzi . В разделе комментариев показано, как настроить helm, чтобы Prometheus распознал эту метку.

 #--------------------------------------------------------------------------------
# The kube-prometheus-stack helm chart must have the value
# podMonitorSelector.matchLabels set to match the label `app: strimzi` of the PodMonitors below.
# Otherwise Prometheus operator will not scrape the metrics of the corresponding pods
#
# prometheus:
#   prometheusSpec:
#     podMonitorSelector:
#       matchLabels:
#         app: strimzi
#--------------------------------------------------------------------------------

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: strimzi-cluster-operator-metrics
  labels:
    app: strimzi
spec:
  selector:
    matchLabels:
      strimzi.io/kind: cluster-operator
  namespaceSelector:
    matchNames:
      - strimzi
  podMetricsEndpoints:
  - path: /metrics
    port: http