#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