Я установил kube-prometheus-stack в качестве зависимости в моей диаграмме управления на локальном докере для кластера Mac Kubernetes v1.19.7. Я могу просмотреть цели Prometheus по умолчанию, предоставленные kube-prometheus-stack.
У меня есть служба python flask, которая предоставляет метрики, которые я могу успешно просматривать в кластере kubernetes, используя kubectl port forward
.
Однако я не могу отобразить эти показатели в веб-интерфейсе целей Prometheus.
kube-prometheus-stack указано, что Prometheus.io/scrape не поддерживает обнаружение сервисов на основе аннотаций. Вместо этого читатель обращается к концепции ServiceMonitors
и PodMonitors
.
Итак, я настроил свой сервис следующим образом:
---
kind: Service
apiVersion: v1
metadata:
name: flask-api-service
labels:
app: flask-api-service
spec:
ports:
- protocol: TCP
port: 4444
targetPort: 4444
name: web
selector:
app: flask-api-service
tier: backend
type: ClusterIP
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: flask-api-service
spec:
selector:
matchLabels:
app: flask-api-service
endpoints:
- port: web
Впоследствии я настроил порт для просмотра показателей:
Kubectl port-forward prometheus-flaskapi-kube-prometheus-s-prometheus-0 9090
Затем посетил веб-страницу Прометея по адресу http://localhost:9090
Когда я выбираю пункт меню Status- ›Targets, мой flask-api-service не отображается.
Я знаю, что служба запущена и работает, и проверил, могу ли я просматривать метрики модуля для моей службы flask-api с помощью kubectl port-forward <pod name> 4444
.
Глядя на аналогичную проблему, похоже, что существует значение конфигурации serviceMonitorSelectorNilUsesHelmValues
, которое по умолчанию равно true. Установка этого значения в false заставляет оператора смотреть за пределы меток выпуска в helm ??
Я попытался добавить это в values.yml
моей диаграммы штурвала в дополнение к значению конфигурации extraScrapeConfigs
. Однако flask-api-service по-прежнему не отображается в качестве дополнительной цели на веб-странице Prometheus при выборе пункта меню «Статус-› Цели ».
prometheus:
prometheusSpec:
serviceMonitorSelectorNilUsesHelmValues: false
extraScrapeConfigs: |
- job_name: 'flaskapi'
static_configs:
- targets: ['flask-api-service:4444']
Как мне распознать мою flask-api-service на странице целей prometheus по адресу http://localhost:9090
?
Я устанавливаю Kube-Prometheus-Stack в качестве зависимости через мою диаграмму управления со значениями по умолчанию, как показано ниже:
Chart.yaml
apiVersion: v2
appVersion: "0.0.1"
description: A Helm chart for flaskapi deployment
name: flaskapi
version: 0.0.1
dependencies:
- name: kube-prometheus-stack
version: "14.4.0"
repository: "https://prometheus-community.github.io/helm-charts"
- name: ingress-nginx
version: "3.25.0"
repository: "https://kubernetes.github.io/ingress-nginx"
- name: redis
version: "12.9.0"
repository: "https://charts.bitnami.com/bitnami"
Values.yaml
docker_image_tag: dcs3spp/
hostname: flaskapi-service
redis_host: flaskapi-redis-master.default.svc.cluster.local
redis_port: "6379"
prometheus:
prometheusSpec:
serviceMonitorSelectorNilUsesHelmValues: false
extraScrapeConfigs: |
- job_name: 'flaskapi'
static_configs:
- targets: ['flask-api-service:4444']