---
title: "Exporter vos métriques applicatives"
description: "Faire scraper les métriques Prometheus de votre application par la plateforme avec un ServiceMonitor, et les visualiser dans votre Grafana — inclus dans le prix."
source_url:
  html: https://docs.blackswift.cloud/operer/metriques-applicatives/
  md: https://docs.blackswift.cloud/operer/metriques-applicatives.md
---

# Exporter vos métriques applicatives

> Faire scraper les métriques Prometheus de votre application par la plateforme avec un ServiceMonitor, et les visualiser dans votre Grafana — inclus dans le prix.

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](https://docs.blackswift.cloud/operer/acceder-au-monitoring.md), 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 :

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mon-app
spec:
  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: v1
kind: Service
metadata:
  name: mon-app
  labels: {app: mon-app}           # ← labels sur le Service : c'est eux que
spec:                              #    le ServiceMonitor sélectionne
  selector: {app: mon-app}
  ports:
    - name: http
      port: 8080
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: mon-app
spec:
  selector:
    matchLabels: {app: mon-app}    # ← matche les labels du SERVICE
  endpoints:
    - port: http                   # ← le nom du port du Service
      path: /metrics
      interval: 30s
```

Dans 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

1. **Le ServiceMonitor sélectionne les labels du Service, pas ceux des pods.**
   Si rien ne remonte, vérifiez : `kubectl get svc mon-app --show-labels` doit
   afficher les labels attendus par le `selector` du ServiceMonitor ;
2. **`port` désigne le *nom* du port du Service** (`http` ci-dessus), pas son
   numéro — un port non nommé ne peut pas être référencé ;
3. **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](https://docs.spring.io/spring-boot/reference/actuator/metrics.html)
(Java), [prom-client](https://github.com/siimon/prom-client) (Node.js),
[prometheus-client](https://github.com/prometheus/client_python) (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](https://docs.blackswift.cloud/operer/acceder-au-monitoring.md) : **Dashboards → New**,
choisissez la source de données proposée, et requêtez vos métriques. Exemples de
requêtes PromQL de départ :

```text
# Débit de requêtes par seconde
rate(http_requests_total{namespace="c-acme-rtximz-prod"}[5m])

# P95 de latence
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
```

:::tip[Et les alertes ?]
Couplées à vos métriques, les alertes ferment la boucle de supervision — parlez
de votre besoin au [support](https://docs.blackswift.cloud/depanner/contacter-le-support.md), les capacités
évoluent régulièrement.
:::
