RousselTMLEARNING

Article · OpenTelemetry: From Discovery to Expertise

Connectors, extensions and Collector observability

This article is available in French.

1. Les connecteurs #

Faire passer des données d'un pipeline à un autre.

Principe #

Connecteur spanmetrics
Les métriques RED (débit, erreurs, durée) sont calculées à partir de 100 % des spans, avant l'échantillonnage.

Un connecteur est déclaré comme exportateur d'un pipeline et comme receiver d'un autre. Il permet de transformer un signal en un autre, de router ou de dupliquer des données.

Les plus utiles #

ConnecteurRôle
spanmetricscalcule débit, erreurs et durées (histogrammes) par service et opération à partir des spans
servicegraphproduit les métriques de la carte des dépendances entre services
countcompte des spans, logs ou points de métrique répondant à une condition OTTL
routingenvoie les données vers des pipelines différents selon un attribut (locataire, environnement)
failoverbascule vers un pipeline de secours si le principal échoue
forwardrelie simplement deux pipelines du même type
connectors:
  spanmetrics:
    histogram: { explicit: { buckets: [5ms, 25ms, 100ms, 250ms, 1s, 5s] } }
    dimensions: [{ name: http.request.method }, { name: http.response.status_code }]
  routing:
    default_pipelines: [logs/standard]
    table:
      - condition: resource.attributes["tenant"] == "premium"
        pipelines: [logs/premium]
service:
  pipelines:
    traces:          { receivers: [otlp], processors: [batch], exporters: [otlp/tempo, spanmetrics] }
    metrics/spans:   { receivers: [spanmetrics], exporters: [prometheusremotewrite] }
Bonne Pratique : Placez spanmetrics avant tout échantillonnage par la queue (tail sampling) : les métriques restent exactes même si vous ne gardez que 10 % des traces.

2. Les extensions #

Ce qui n'est pas dans le flux de données.

Panorama #

ExtensionUsage
health_checkpoint de santé HTTP pour les sondes Kubernetes et les répartiteurs de charge
pprofprofilage du Collector lui-même
zpagespages de diagnostic en direct (pipelines, spans récents)
file_storagestockage sur disque pour la file d'attente persistante et les positions de lecture des fichiers
bearertokenauth, oauth2client, basicauthauthentification auprès des backends ou des clients
opamppilotage à distance du Collector (voir Bindplane)
extensions:
  health_check: { endpoint: 0.0.0.0:13133 }
  zpages: { endpoint: 0.0.0.0:55679 }
  file_storage: { directory: /var/lib/otelcol/queue }
exporters:
  otlp/backend:
    endpoint: backend:4317
    sending_queue: { enabled: true, storage: file_storage }   # survit à un redémarrage
service:
  extensions: [health_check, zpages, file_storage]

3. Observer le Collector #

Il faut superviser le superviseur.

Télémétrie interne #

Le Collector expose ses propres métriques (par défaut au format Prometheus sur le port 8888) et peut envoyer ses logs et traces internes en OTLP. Trois questions à surveiller : reçoit-il ? perd-il ? sature-t-il ?

MétriqueSignale
otelcol_receiver_accepted_spans / _refused_spansdonnées acceptées ou refusées à l'entrée
otelcol_processor_dropped_*, refus du memory_limiterdonnées perdues par manque de mémoire
otelcol_exporter_sent_* / _send_failed_*envois réussis ou en échec vers le backend
otelcol_exporter_queue_size / _queue_capacityfile d'attente qui se remplit : backend trop lent ou injoignable
service:
  telemetry:
    logs: { level: info }
    metrics:
      level: detailed
      readers:
        - pull: { exporter: { prometheus: { host: 0.0.0.0, port: 8888 } } }
Erreur Courante : Une alerte sur otelcol_exporter_send_failed_* et sur le remplissage de la file vaut mieux que de découvrir un trou de plusieurs heures dans les traces pendant un incident.
Points de perte du Collector
Un écart entre accepted et sent signale une perte : mémoire, filtre ou backend injoignable.

4. Distributions et Collector sur mesure #

Ne livrer que les composants utiles.

Choisir #

DistributionContenu
otelcol (core)composants essentiels, maintenus par le projet
otelcol-contribdes centaines de composants communautaires : idéal pour tester
otelcol-k8ssélection adaptée à Kubernetes
Distributions éditeursGrafana Alloy, Bindplane BDOT, Splunk, Elastic EDOT, AWS ADOT…
# builder-config.yaml pour ocb (OpenTelemetry Collector Builder)
dist: { name: otelcol-maison, output_path: ./dist }
receivers:  [{ gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.115.0 }]
processors: [{ gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.115.0 }]
exporters:  [{ gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.115.0 }]
Bonne Pratique : En production, construisez une distribution avec ocb qui ne contient que vos composants : binaire plus petit, surface d'attaque réduite, mises à jour maîtrisées. Alignez les numéros de version de tous les modules.

📄 Collector OpenTelemetry : connecteurs, extensions et observabilité du Collector →

My progress

  • ⏱ Estimated time : ≈ 8 min

Sign in to track your progress and take notes. Sign in

✉️ Ask a question

Recommended Articles

Bindplane : gérer ses pipelines de télémétrie OpenTelemetry

Comprendre Bindplane : plan de contrôle des collecteurs OpenTelemetry via OpAMP, BDOT Collector, ...

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...

Réduire, masquer et router la télémétrie avec Bindplane

Réduire les coûts d'ingestion avec Bindplane : filtres de sévérité, déduplication, échantillonnag...

Projet fil rouge : les quatre signaux de l'OpenTelemetry Demo dans la stack Grafana

Un projet fil rouge qui traverse les formations d'observabilité : déployer l'OpenTelemetry Demo, ...

Les traces OpenTelemetry en profondeur : spans, statuts, événements, liens et échantillonnage

Maîtriser le signal trace : anatomie d'une trace distribuée, span et SpanKind, attributs, statut ...

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

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

Les logs avec OpenTelemetry : modèle de données, appenders, corrélation et collecte

Maîtriser le signal log : modèle de données LogRecord, Logs Bridge API et appenders (Logback, Log...

Corréler traces, métriques, logs et profils avec OpenTelemetry

Relier les quatre signaux pour diagnostiquer vite : ressource commune, trace_id dans les logs, ex...

Support us

♥ SUPPORT US

Support RousselTM Learning

Courses, articles, labs and certificates stay free with no intrusive ads. A voluntary contribution, of any amount you choose, pays for hosting, lab environments and new content.

Contribute with PayPal Any amount · card or PayPal accountLearn more
QR code PayPal
Or scan this QR code with your phone

Thank you, every contribution counts!