Rendre un service détectable par Prometheus
Ce guide explique comment rendre un service ou un Pod Kubernetes détectable par Prometheus dans un cluster Kumba,
à l’aide des ressources ServiceMonitor et PodMonitor.
Dans chaque cluster Kumba, un opérateur Prometheus est déployé pour faciliter l’intégration de Prometheus avec Kubernetes.
Cet opérateur fournit des CRD (Custom Resource Definitions) permettant la découverte automatique de nouveaux services.
Exemple de service Kubernetes
Imaginons que vous souhaitiez que Prometheus découvre le service suivant :
apiVersion: v1
kind: Service
metadata:
name: my-site
namespace: my-namespace
labels:
app: my-site
spec:
ports:
- name: web
port: 80
protocol: TCP
targetPort: 80
type: ClusterIP
selector:
app: my-app
Options
Créer une ressource ServiceMonitor
Pour que Prometheus puisse détecter ce service et collecter les métriques exposées sur /metrics,
Il est nécessaire de créer la ressource ServiceMonitor.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-site
namespace: my-namespace
spec:
selector:
matchLabels:
app: my-site
endpoints:
- port: web
Cette ressource indique à Prometheus d’interroger le port nommé web du service my-site.
Cibler directement un Pod avec PodMonitor (alternative)
Dans certains cas, notamment avec des StatefulSets, il peut être préférable de cibler directement les Pods.
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: my-site-pod
namespace: my-namespace
spec:
selector:
matchLabels:
app: my-site-pod
podMetricsEndpoints:
- port: web
Cette ressource permet à Prometheus de collecter les métriques directement depuis les Pods correspondant au label app: my-site-pod.