#prometheus #grafana #prometheus-operator
Вопрос:
Когда я разверну это:
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
labels:
app: complaints-monitor
release: prometheus # <---------
name: complaints-monitor-svc-monitor
namespace: default
spec:
endpoints:
- path: /metrics
port: web
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: complaints-monitor
Моя служба отображается под целями prometheus и работает правильно.
Если вместо этого я применю следующее, цель исчезнет:
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
labels:
app: complaints-monitor
name: complaints-monitor-svc-monitor
namespace: default
spec:
endpoints:
- path: /metrics
port: web
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: complaints-monitor
Ответ №1:
Просто выяснил эту проблему после проверки values.yaml
kube-prometheus-stack
## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the
## prometheus resource to be created with selectors based on values in the helm deployment,
## which will also match the servicemonitors created
##
serviceMonitorSelectorNilUsesHelmValues: true
## ServiceMonitors to be selected for target discovery.
## If {}, select all ServiceMonitors
##
serviceMonitorSelector: {}
## Example which selects ServiceMonitors with label "prometheus" set to "somelabel"
# serviceMonitorSelector:
# matchLabels:
# prometheus: somelabel
Когда вы используете helm для установки kube-prometheus-stack
, он добавляет метку release: <prometheus-installed-namespace>
в ресурс Kubernetes.
Если настройка serviceMonitorSelectorNilUsesHelmValues
является true
селектором , будет добавлен prometheus.prometheusSpec.serviceMonitorSelector
, в вашем случае это release: prometheus
так .
Вы сможете увидеть селектор для prometheus, чтобы выбрать serviceMonitor с помощью команды
kubectl -n <prometheus-installed-namespace> get prometheus -o yaml
и искать serviceMonitorSelector
.
У вас есть два варианта, чтобы заставить его работать без добавления release
ярлыка
- Установите
serviceMonitorSelectorNilUsesHelmValues
значениеfalse
, затем prometheus выберет все сервисмОниторы - Или установите
serviceMonitorSelector
любую метку, которая вам нравится.