RousselTMLEARNING

Article · Opentelemetry : de la découverte à l'expertise

Les Exporters : Router la donnée vers les backends

1. Panorama des exporters #

Quel exporter pour quel backend ?

Les plus courants #

Exporters du Collector
Un même signal peut aller vers plusieurs exporters.
ExporterSignalUsage
otlp (gRPC)Traces, métriques, logsTempo, autre Collector, backends compatibles OTLP
otlphttpTraces, métriques, logsLoki (/otlp), Grafana Cloud, Dynatrace, Honeycomb
prometheusMétriquesExpose un endpoint /metrics à scraper
prometheusremotewriteMétriquesPush vers Prometheus, Mimir, Thanos Receive
debugTousAfficher dans la console (diagnostic)
fileTousÉcrire dans un fichier JSON
loadbalancingTraces, logsRépartir par TraceID entre plusieurs Collectors

2. Configurer les exporters #

Exemples complets.

OTLP, Prometheus et debug #

exporters:
  otlp/tempo:
    endpoint: tempo:4317
    tls: { insecure: true }
  otlphttp/loki:
    endpoint: http://loki:3100/otlp
  prometheusremotewrite:
    endpoint: http://mimir:9009/api/v1/push
    headers: { X-Scope-OrgID: equipe-a }
    resource_to_telemetry_conversion: { enabled: true }
  prometheus:
    endpoint: 0.0.0.0:8889          # à scraper par Prometheus
  debug:
    verbosity: basic

service:
  pipelines:
    traces:  { receivers: [otlp], processors: [batch], exporters: [otlp/tempo, debug] }
    metrics: { receivers: [otlp], processors: [batch], exporters: [prometheusremotewrite] }
    logs:    { receivers: [otlp], processors: [batch], exporters: [otlphttp/loki] }

TLS et authentification #

exporters:
  otlphttp/cloud:
    endpoint: https://otlp-gateway-prod-eu-west-0.grafana.net/otlp
    auth: { authenticator: basicauth/cloud }
  otlp/secure:
    endpoint: backend.interne:4317
    tls:
      ca_file: /etc/otel/ca.pem
      cert_file: /etc/otel/client.pem
      key_file: /etc/otel/client.key

extensions:
  basicauth/cloud:
    client_auth: { username: ${env:GC_USER}, password: ${env:GC_TOKEN} }
service:
  extensions: [basicauth/cloud]
Erreur Courante : Ne laissez pas tls.insecure: true en production : la télémétrie peut contenir des données sensibles. Utilisez des variables d'environnement (${env:NOM}) pour les secrets.

3. Fiabilité : retry et file d'attente #

Ne pas perdre de données quand le backend est lent.

sending_queue et retry_on_failure #

exporters:
  otlp/tempo:
    endpoint: tempo:4317
    sending_queue:
      enabled: true
      num_consumers: 10
      queue_size: 5000
      storage: file_storage/queue       # file d'attente persistante sur disque
    retry_on_failure:
      enabled: true
      initial_interval: 5s
      max_interval: 30s
      max_elapsed_time: 5m
    timeout: 15s

extensions:
  file_storage/queue:
    directory: /var/lib/otelcol/queue
Bonne Pratique : Surveillez otelcol_exporter_queue_size et otelcol_exporter_send_failed_spans : une file qui se remplit signale un backend trop lent avant la perte de données.

4. Répartir la charge et diagnostiquer #

loadbalancing et debug.

Load balancing par TraceID #

# Couche 1 : distribue par TraceID vers les Collectors de la couche 2 (tail sampling)
exporters:
  loadbalancing:
    routing_key: traceID
    protocol: { otlp: { tls: { insecure: true } } }
    resolver:
      dns: { hostname: otel-collector-tier2.monitoring.svc.cluster.local, port: 4317 }

Vérifier que les données partent #

curl -s localhost:8888/metrics | grep -E 'otelcol_exporter_(sent|send_failed)_(spans|metric_points|log_records)'
docker logs otelcol 2>&1 | grep -iE "error|dropping|retry" | tail
otelcol-contrib validate --config=config.yaml

📄 OpenTelemetry Collector : les Exporters (envoyer la télémétrie vers les backends) →

Mon suivi

  • ⏱ Durée estimée : ≈ 11 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

Articles recommandés

Instrumenter ses applications pour Jaeger avec OpenTelemetry

Envoyer des traces à Jaeger avec OpenTelemetry : auto-instrumentation (Java, Python, Node.js), SD...

Les conventions sémantiques OpenTelemetry (semconv) : nommer la télémétrie

Comprendre et appliquer les conventions sémantiques OpenTelemetry : attributs de ressource, HTTP,...

Les métriques OpenTelemetry : instruments, temporalité, histogrammes et exemplars

Maîtriser le signal métrique : MeterProvider, instruments synchrones et asynchrones (Counter, UpD...

OpenTelemetry sur Kubernetes : Operator, auto-instrumentation et Collector

Déployer OpenTelemetry sur Kubernetes : modes de déploiement du Collector (DaemonSet, Deployment,...

Les concepts fondamentaux d'OpenTelemetry : signaux, ressources, contexte et maturité

Le vocabulaire indispensable d'OpenTelemetry : les quatre signaux, API et SDK, ressource et instr...

Les profils, le quatrième signal d'OpenTelemetry : profilage continu et corrélation avec les traces

Comprendre le nouveau signal profile d'OpenTelemetry : profilage continu, flame graphs, modèle de...

Envoyer des traces vers Tempo : instrumentation OpenTelemetry et Alloy

Produire et acheminer des traces vers Tempo : auto-instrumentation Python/Java/Node, SDK manuel, ...

OpenTelemetry et Dynatrace : OTLP, collecteur et instrumentation

Intégrer OpenTelemetry à Dynatrace : endpoint OTLP et jetons, Dynatrace OTel Collector, traces, m...

Grafana Alloy et Prometheus : collecter et envoyer des métriques

Apprenez à configurer Grafana Alloy pour collecter, transformer et envoyer des métriques en utili...

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 !