Exporter vos métriques applicatives
Votre application expose des métriques au format Prometheus (/metrics) ?
Déclarez un ServiceMonitor et la plateforme les collecte automatiquement —
elles apparaissent dans votre Grafana, prêtes
pour vos dashboards custom. Inclus dans le prix (fair use), rien à installer.
Le trio testé sur la plateforme
Une application qui expose /metrics, son Service, et le ServiceMonitor :
apiVersion: apps/v1kind: Deploymentmetadata: name: mon-appspec: selector: matchLabels: {app: mon-app} template: metadata: labels: {app: mon-app} spec: containers: - name: app image: registry.exemple.com/acme/mon-app:1.4 ports: - name: http # ← port nommé, référencé par le ServiceMonitor containerPort: 8080 resources: requests: {cpu: 100m, memory: 256Mi}---apiVersion: v1kind: Servicemetadata: name: mon-app labels: {app: mon-app} # ← labels sur le Service : c'est eux quespec: # le ServiceMonitor sélectionne selector: {app: mon-app} ports: - name: http port: 8080---apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata: name: mon-appspec: selector: matchLabels: {app: mon-app} # ← matche les labels du SERVICE endpoints: - port: http # ← le nom du port du Service path: /metrics interval: 30sDans la minute qui suit, la plateforme découvre la cible et commence à scraper.
Vos métriques sont interrogeables dans Grafana avec leurs labels
(namespace, pod, job=mon-app…).
Les trois pièges classiques
- Le ServiceMonitor sélectionne les labels du Service, pas ceux des pods.
Si rien ne remonte, vérifiez :
kubectl get svc mon-app --show-labelsdoit afficher les labels attendus par leselectordu ServiceMonitor ; portdésigne le nom du port du Service (httpci-dessus), pas son numéro — un port non nommé ne peut pas être référencé ;- L’endpoint doit répondre sans authentification depuis le cluster : testez
kubectl exec deploy/mon-app -- wget -qO- localhost:8080/metrics | head.
Côté application
La plupart des frameworks ont une bibliothèque Prometheus prête à l’emploi : Spring Boot Actuator (Java), prom-client (Node.js), prometheus-client (Python)… Elles exposent d’office les métriques standard (requêtes HTTP, latences) ; ajoutez vos compteurs métier par-dessus.
Pour un workload sans Service (CronJob, pods bruts), utilisez un
PodMonitor — même principe, mais son selector matche directement les labels
des pods.
Construire un dashboard
Dans votre Grafana : Dashboards → New, choisissez la source de données proposée, et requêtez vos métriques. Exemples de requêtes PromQL de départ :
# Débit de requêtes par seconderate(http_requests_total{namespace="c-acme-rtximz-prod"}[5m])
# P95 de latencehistogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))