RousselTMLEARNING

Observabilité

Métriques OpenTelemetry dans Elasticsearch

Collecter des métriques d'hôte, de Kubernetes et d'applications avec OpenTelemetry, comprendre temporalité et types, stocker dans des data streams de séries temporelles et les interroger.

1. Les sources #

Hôtes, Kubernetes, applications.

Receivers #

hostmetrics, kubeletstats, applications, Collector, Elasticsearch.
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 #

TypeExempleRemarque
Gaugesystem.memory.utilizationvaleur instantanée
Sum (counter)http.server.request.countcumulatif ou delta
Histogramhttp.server.request.durationstocké 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 DESC
Bonne 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.

Articles liés

Transforms et enrich : résumer et enrichir les données dans Elasticsearch

Créer des index centrés sur les entités avec les transforms pivot et latest, et enrichir les documents à l'in…

OpenTelemetry et Elasticsearch : compatibilité et architecture

Envoyer de l'OpenTelemetry vers Elasticsearch : Collector et exportateur elasticsearch, endpoint OTLP géré, A…

Ingérer des logs OpenTelemetry dans Elasticsearch

Collecter et structurer des logs avec le Collector OpenTelemetry (receiver filelog, opérateurs, processeur tr…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !