OpenTelemetry von Grund auf
Spuren, Kennzahlen und Logs mit einem Standard, und kein Lieferant-Lock-in.
Spuren, Kennzahlen und Logs mit einem Standard, und kein Lieferant-Lock-in.

Jahrelang bedeutete Beobachtbarkeit, einen Anbieter auszuwählen und seinen Agenten überall zu installieren. Dann ihr SDK in deinem Code. Dann ihre Abfrage Sprache in Ihrem Kopf. Der Lieferantwechsel bedeutete, alles neu zu organisieren, also wechselte niemand, und die Preise stiegen.
OpenTelemetry hat das geändert. Es ist jetzt das zweitaktivste CNCF-Projekt nach Kubernetes und die Standardmethode zur Sammlung von Telemetrie. Wenn Sie heute mit der Beobachtbarkeit beginnen, beginnen Sie hier.
OpenTelemetry (oft kurz Hotel) ist eine Reihe offener Standards, SDKs und Tools zur Erstellung und Erhebung von Telemetrie-Daten. Die Schlüsselidee: Einmal ein Instrument, überall hin senden..
Ihr Code und Ihre Infrastruktur produzieren Daten in einem Standardformat. Wo diese Daten hingehen, Prometheus, Grafana, Jaeger, Datadog, Honeycomb, New Relic, Elastic oder was auch immer, ist nur Konfiguration. Das Backend wechseln, die Instrumente behalten.
Spuren Sie können eine einzige Anfrage durch Ihr System verfolgen. Eine Spur besteht aus Spannweite, eine pro Operation: die HTTP-Anfrage, die Datenbankabfrage, der Aufruf an einen anderen Dienst. Spuren beantworten "wo ist die Zeit hin?" und "wo ist sie versagt?"
Kennzahlen sind Zahlen im Laufe der Zeit: Anforderungsrate, Fehlerrate, Latenzperzentile, CPU-Nutzung, Warteschlange. Billig zu lagern, perfekt für Dashboards und Warnungen.
Holz sind zeitgestempelte Ereignisse. OpenTelemetry kann Spuren-IDs an Logs anbringen, so dass Sie von einer Logzeile zur vollständigen Spur der Anfrage springen können, die sie erzeugt hat.
Profile Zeigen Sie, welcher Code CPU und Speicher verwendet. Das ist das neueste Signal in der OpenTelemetry, das noch reif wird.
Die Magie geschieht, wenn sie verbunden sind: ein Anstieg der Latenzmetrik, verbunden mit Beispielspuren, verbunden zu den Protokollen der langsamen Anfragen.
Die Metriken sagen, dass etwas nicht stimmt. Spuren sagen, wo. Die Protokolle sagen, warum.
http.request.method oder db.system, so dass Daten überall gleich aussehen.Der schnellste Weg, OpenTelemetry in Aktion zu sehen, ist die Autorinstrumentierung. Für eine Python-App:
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
export OTEL_SERVICE_NAME=shop-api
export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
opentelemetry-instrument python app.py
Für Java ist der Agent mit -javaagent:opentelemetry-javaagent.jar- Ich weiß . Für Node.js laden Sie das Auto-Instrumentationspaket beim Starten. Auf Kubernetes wird die OpenTelemetry-Operator kann sogar die automatische Instrumentierung in die Kapseln mit einer einzigen Anmerkung einführen.
Innerhalb weniger Minuten wird jede eingehende Anfrage, jeder ausgehende HTTP-Aufruf und jede Datenbankabfrage zu einem Span.
Dann fügen Sie ein paar hinzu. Handlänge für wichtige Geschäftstätigkeiten:
from opentelemetry import trace
tracer = trace.get_tracer("shop")
def place_order(order):
with tracer.start_as_current_span("place_order") as span:
span.set_attribute("order.items", len(order.items))
# ... business logic
Ich schicke immer Telemetrie an einen Sammler Erstens, anstatt direkt von Apps zu einem Backend. Es löst Apps von Anbietern und ermöglicht es Ihnen, Daten zentral zu verarbeiten.
receivers:
otlp:
protocols:
grpc:
http:
processors:
memory_limiter:
check_interval: 1s
limit_percentage: 80
batch:
attributes:
actions:
- key: user.email
action: delete # don't ship personal data
exporters:
otlp/tempo:
endpoint: tempo:4317
tls:
insecure: true
prometheusremotewrite:
endpoint: http://prometheus:9090/api/v1/write
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, attributes, batch]
exporters: [otlp/tempo]
metrics:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [prometheusremotewrite]
Ein häufiges Muster auf Kubernetes: ein Sammler als DaemonSet Die Daten werden an jedem Knoten (der von lokalen Pods empfängt und die Daten an den Knoten sammelt) an einen zentralen Schnittstelle Sammler, der die Probenahme, Filterung und den Export erledigt.
Mit dem Collector in der Mitte ist das Ändern oder Hinzufügen eines Backends eine Konfigurationsänderung. Beliebte Open-Source-Destinationen:
Oder jeder kommerzielle Anbieter, der OTLP akzeptiert, was heute fast alle sind.
service.name Ich habe alles. Ohne sie sind Ihre Daten ein Durcheinander.- Das ist klar. Die ganze Industrie geht auf Open-Telemetry zu. Wenn man heute mit ihm arbeitet, muss man nie wieder arbeiten, nur weil man den Anbieter gewechselt hat. Man bekommt Spuren, Kennzahlen und Protokolle, die endlich miteinander sprechen.
Meine Meinung: ein Mal ein Instrument, mit einem offenen Standard, und die Freiheit behalten, über alles andere Ihre Meinung zu ändern.
Desly