1. Les sources #
Hôtes, Kubernetes, applications.
Receivers #
receivers:
hostmetrics:
collection_interval: 30s
scrapers: { cpu: {}, memory: {}, load: {}, filesystem: {}, network: {} }
kubeletstats:
auth_type: serviceAccount
endpoint: https://${env:K8S_NODE_NAME}:10250
insecure_skip_verify: true
processors:
resourcedetection: { detectors: [env, system] }2. Types et temporalité #
Ce qui change le stockage.
Types de métriques #
| Type | Exemple | Remarque |
|---|---|---|
| Gauge | system.memory.utilization | valeur instantanée |
| Sum (counter) | http.server.request.count | cumulatif ou delta |
| Histogram | http.server.request.duration | stocké en histogramme, percentiles calculés |
Temporalité #
Elasticsearch stocke les compteurs cumulatifs comme les deltas ; pour les calculs de débit, privilégiez une temporalité homogène par source. Le processeur cumulativetodelta convertit si nécessaire.
À savoir : Les métriques OTel sont écrites dans des TSDS (time series data streams) : stockage compact, dimensions indexées, possibilité de sous-échantillonnage (downsampling) pour la rétention longue.
3. Interroger et alerter #
ES|QL, tableaux de bord, règles.
Requêtes #
FROM metrics-*.otel-*
| WHERE metrics.system.cpu.utilization IS NOT NULL
| STATS cpu = AVG(metrics.system.cpu.utilization) BY host = resource.attributes.host.name, BUCKET(@timestamp, 5 minutes)
| SORT cpu DESCBonne pratique : Limitez la cardinalité des attributs (pas d'identifiant d'utilisateur ni d'URL complète en dimension) : chaque combinaison crée une série temporelle.
Selon la version : les noms de champs exacts (metrics.*) dépendent de la version de l'exportateur et du mode de mapping : vérifiez-les dans Discover avant d'écrire vos tableaux de bord.