1. Elasticsearch et OpenTelemetry #
Une compatibilité devenue native.
Le contexte #
OpenTelemetry (OTel) est le standard ouvert de collecte des traces, métriques et logs. Elastic a donné son schéma ECS au projet en 2023 pour converger avec les conventions sémantiques OTel, puis a rendu Elasticsearch capable de stocker les données OTel telles quelles, sans conversion, et publie sa propre distribution EDOT (Elastic Distribution of OpenTelemetry : Collector et SDK).
Selon la version : le stockage OTel natif est arrivé en préversion avec Elastic 8.16 puis s'est généralisé en 9.x ; l'endpoint OTLP géré est proposé sur Elastic Cloud (Serverless puis Hosted). Vérifiez la matrice de compatibilité de votre version.
Trois chemins #
| Chemin | Stockage | Quand |
|---|---|---|
| Collector (EDOT ou contrib) + exportateur elasticsearch | OTel natif (ou ECS) | Auto-hébergé, contrôle complet du pipeline |
| Endpoint OTLP géré | OTel natif | Elastic Cloud : rien à exploiter côté réception |
| APM Server (OTLP) | Converti en ECS | Existant APM Elastic, agents APM classiques |
2. Stockage et data streams #
OTel natif ou ECS.
Modes de stockage #
En mode otel, les attributs de ressource restent sous resource.attributes.* et ceux des signaux sous attributes.* : les requêtes et les tableaux de bord OpenTelemetry existants s'appliquent directement. Le mode ecs traduit vers les champs ECS (service.name, host.name), utile pour réutiliser des tableaux de bord Elastic historiques.
Configuration de référence #
receivers:
otlp:
protocols:
grpc: { endpoint: 0.0.0.0:4317 }
http: { endpoint: 0.0.0.0:4318 }
processors:
batch: {}
resource:
attributes:
- { key: deployment.environment, value: lab, action: upsert }
exporters:
elasticsearch:
endpoint: https://es.exemple.fr:9200
api_key: ${env:ES_API_KEY}
mapping:
mode: otel
service:
pipelines:
traces: { receivers: [otlp], processors: [resource, batch], exporters: [elasticsearch] }
metrics: { receivers: [otlp], processors: [resource, batch], exporters: [elasticsearch] }
logs: { receivers: [otlp], processors: [resource, batch], exporters: [elasticsearch] }Bonne pratique : Créez une clé d'API dédiée au Collector, limitée à l'écriture danslogs-*,metrics-*ettraces-*.
3. Kibana et OpenTelemetry #
Explorer les données.
Où voir les données #
- Discover et ES|QL sur les data streams
*.otel-*. - Applications APM / Observability : services, traces, carte des services (avec les métriques APM calculées par le Collector EDOT).
- Tableaux de bord et alertes sur les métriques OTel.
FROM traces-*.otel-*
| WHERE resource.attributes.service.name == "checkout"
| STATS p95 = PERCENTILE(duration, 95) BY name
| SORT p95 DESC | LIMIT 10Erreur courante : Utiliser le Collector contrib sans le connecteur ou le processeur APM d'Elastic : les traces sont stockées, mais les vues APM de Kibana (latence, débit, taux d'erreur par service) restent vides. La distribution EDOT inclut ces composants.
