??? Jaeger v2 kommt! Lesen Sie den Blogbeitrag und probieren Sie es aus.
Diagramm TD
SDK["OpenTelemetry SDK"] -> |HTTP oder gRPC| KOLLEKTOR
COLLECTOR["Jaeger Collector"] --> STORE[Storage]
COLLECTOR -> |gRPC| PLUGIN[Speicher-Plugin]
COLLECTOR -> |gRPC/sampling| SDK
PLUGIN -> STORE
QUERY[Jaeger Query Service] -> STORE
ABFRAGE -> |gRPC| PLUGIN
UI[Jaeger UI] --> |HTTP| ABFRAGE
Unterabschnitt Anwendungshost
Unterabschnitt Benutzeranwendung
SDK
Ende
Ende
Jaeger, inspiriert von Dapper und OpenZipkin, ist eine verteilte Tracing-Plattform, die von Uber Technologies entwickelt und an die Cloud Native Computing Foundation gespendet wurde. Es kann zur Überwachung von auf Microservices basierenden verteilten Systemen verwendet werden:
Siehe auch:
Jaeger wird von der Cloud Native Computing Foundation (CNCF) als 7. Top-Level-Projekt gehostet (Abschluss im Oktober 2019). Wenn Sie ein Unternehmen sind, das die Entwicklung von Technologien mitgestalten möchte, die in Containern verpackt, dynamisch geplant und auf Microservices ausgerichtet sind, sollten Sie einen Beitritt zur CNCF in Betracht ziehen. Einzelheiten darüber, wer beteiligt ist und welche Rolle Jaeger spielt, finden Sie in der CNCF-Ankündigung zur Jaeger-Inkubation und der Jaeger-Abschlussankündigung.
Jaeger ist ein Open-Source-Projekt mit offener Governance. Wir freuen uns über Beiträge aus der Community und würden uns über Ihre Hilfe bei der Verbesserung und Erweiterung des Projekts freuen. Hier finden Sie einige Ideen, wie Sie sich engagieren können. Viele von ihnen erfordern nicht einmal eine Codierung.
Das Backend von Jaeger ist so konzipiert, dass es keine Single Points of Failure aufweist und mit den Geschäftsanforderungen skaliert werden kann. Beispielsweise verarbeitet jede Jaeger-Installation bei Uber in der Regel mehrere Milliarden Spans pro Tag.
Die Projekte Jaeger und OpenTelemetry verfolgen unterschiedliche Ziele. OpenTelemetry zielt darauf ab, APIs und SDKs in mehreren Sprachen bereitzustellen, um Anwendungen den Export verschiedener Telemetriedaten aus dem Prozess in eine beliebige Anzahl von Metriken und Tracing-Backends zu ermöglichen. Das Jaeger-Projekt ist in erster Linie das Tracing-Backend, das Tracing-Telemetriedaten empfängt und Verarbeitung, Aggregation, Data Mining und Visualisierungen dieser Daten bereitstellt. Weitere Informationen finden Sie in einem Blogbeitrag von Jaeger und OpenTelemetry.
Jaeger wurde ursprünglich zur Unterstützung des OpenTracing-Standards entwickelt. Die Terminologie wird weiterhin in der Jaeger-Benutzeroberfläche verwendet, die Konzepte sind jedoch direkt auf das OpenTelemetry-Datenmodell von Traces abgebildet.
Fähigkeit | OpenTracing-Konzept | OpenTelemetry-Konzept |
---|---|---|
Stellen Sie Spuren als gerichtete azyklische Graphen dar (nicht nur Bäume) | Span-Referenzen | span-Links |
Stark typisierte Span-Attribute | span-Tags | span-Attribute |
Stark typisierte Ereignisse/Protokolle | Span-Protokolle | übergreifende Ereignisse |
Das Jaeger-Projekt empfiehlt OpenTelemetry-SDKs für die Instrumentierung anstelle der inzwischen veralteten Jaeger-SDKs.
Jaeger kann mit einer wachsenden Anzahl von Speicher-Backends verwendet werden:
Die Web-Benutzeroberfläche von Jaeger wird in Javascript mithilfe beliebter Open-Source-Frameworks wie React implementiert. In Version 1.0 wurden mehrere Leistungsverbesserungen veröffentlicht, damit die Benutzeroberfläche große Datenmengen effizient verarbeiten und Traces mit Zehntausenden von Spannen anzeigen kann (wir haben beispielsweise einen Trace mit 80.000 Spannen ausprobiert).
Das Jaeger-Backend wird als Sammlung von Docker-Images verteilt. Die Binärdateien unterstützen verschiedene Konfigurationsmethoden, einschließlich Befehlszeilenoptionen, Umgebungsvariablen und Konfigurationsdateien in mehreren Formaten (YAML, TOML usw.).
Die empfohlene Methode zur Bereitstellung von Jaeger in einem Produktions-Kubernetes-Cluster ist der Jaeger-Operator.
Der Jaeger-Operator stellt eine CLI zum Generieren von Kubernetes-Manifesten aus der Jaeger-CR bereit. Dies kann als alternative Quelle zu einfachen Kubernetes-Manifestdateien betrachtet werden.
Das Jaeger-Ökosystem bietet auch ein Helm-Diagramm als alternative Möglichkeit, Jaeger einzusetzen.
Alle Jaeger-Backend-Komponenten stellen standardmäßig Prometheus-Metriken zur Verfügung (andere Metrik-Backends werden ebenfalls unterstützt). Protokolle werden mithilfe der strukturierten Protokollierungsbibliothek zap in den Standardausgang geschrieben.
Sicherheitsüberprüfungen von Jaeger durch Dritte sind unter https://github.com/jaegertracing/security-audits verfügbar. Eine Zusammenfassung der verfügbaren Sicherheitsmechanismen in Jaeger finden Sie in Ausgabe Nr. 1718.
Obwohl wir die Instrumentierung von Anwendungen mit OpenTelemetry empfehlen, müssen Sie nicht den gesamten Code neu schreiben, wenn Ihr Unternehmen bereits in die Instrumentierung mithilfe von Zipkin-Bibliotheken investiert hat. Jaeger bietet Abwärtskompatibilität mit Zipkin, indem es Spans in Zipkin-Formaten (Thrift oder JSON v1/v2) über HTTP akzeptiert. Der Wechsel vom Zipkin-Backend ist lediglich eine Frage der Weiterleitung des Datenverkehrs von den Zipkin-Bibliotheken zum Jaeger-Backend.
Gelegentlich können CLI-Flags beispielsweise aufgrund von Verbesserungen der Benutzerfreundlichkeit oder neuer Funktionalität veraltet sein. In solchen Situationen müssen Entwickler, die die veraltete Version einführen, diese Richtlinien befolgen.
Kurz gesagt: Für ein veraltetes CLI-Flag sollten Sie damit rechnen, die folgende Meldung in der --help
Dokumentation zu sehen:
(deprecated, will be removed after yyyy-mm-dd or in release vX.Y.Z, whichever is later)
Es wird eine Kulanzfrist von mindestens drei Monaten oder zwei kleineren Versionssprüngen (je nachdem, welcher Zeitpunkt später liegt) ab der ersten Veröffentlichung mit der Veraltungsmitteilung gewährt, bevor das veraltete CLI-Flag gelöscht werden kann .
Stellen Sie sich beispielsweise ein Szenario vor, in dem v1.28.0 am 1. Juni 2021 veröffentlicht wird und einen Veraltungshinweis für ein CLI-Flag enthält. Dieses Flag bleibt bis zum 1. September 2021 oder Version 1.30.0 in einem veralteten Zustand, wo es bei oder nach einem dieser Ereignisse entfernt werden kann . Es kann länger als die oben genannte Kulanzfrist veraltet bleiben.
Das Jaeger-Projekt versucht, die aktuell unterstützten Versionen von Go zu verfolgen, wie vom Go-Team definiert. Das Entfernen der Unterstützung für eine nicht unterstützte Go-Version gilt nicht als bahnbrechende Änderung.
Ab der Veröffentlichung von Go 1.21 wird die Unterstützung für Go-Versionen wie folgt aktualisiert:
N
werden Aktualisierungen an den Build- und Testschritten vorgenommen, um die neueste Go-Nebenversion zu unterstützen.N
wird die Unterstützung für Go-Version N-2
entfernt und Version N-1
wird zur mindestens erforderlichen Version. Das Jaeger-Projekt empfiehlt OpenTelemetry-SDKs für die Instrumentierung anstelle der nativen SDKs von Jaeger, die jetzt veraltet sind.
Siehe BEITRAGEN.
Siehe BEITRAGEN.
Vielen Dank an alle, die bereits dazu beigetragen haben!
Regeln für die Zulassung zum Betreuer sind im GOVERNANCE-Dokument definiert. Nachfolgend sind die offiziellen Betreuer des Jaeger-Projekts aufgeführt. Bitte verwenden Sie @jaegertracing/jaeger-maintainers
um sie zu Problemen/PRs zu markieren.
Einige Repositorys unter jaegertracing org haben zusätzliche Betreuer.
Wir sind unseren ehemaligen Betreuern für ihre Beiträge zum Jaeger-Projekt dankbar.
Die Jaeger-Betreuer und Mitwirkenden treffen sich regelmäßig zu einem Videoanruf. Jeder ist willkommen, mitzumachen, auch Endbenutzer. Einzelheiten zum Treffen finden Sie unter https://www.jaegertracing.io/get-in-touch/.
Siehe https://www.jaegertracing.io/docs/roadmap/
Haben Sie Fragen, Anregungen, Fehlerberichte? Erreichen Sie die Projekt-Community über diese Kanäle:
#jaeger
(Muss zum ersten Mal CNCF Slack beitreten)jaeger-tracing
Mail-GruppeJaeger als Produkt besteht aus mehreren Komponenten. Wir möchten verschiedene Arten von Benutzern unterstützen, unabhängig davon, ob sie nur unsere Instrumentierungsbibliotheken oder die vollständige End-to-End-Jaeger-Installation verwenden, ob sie in der Produktion ausgeführt werden oder ob Sie sie zur Behebung von Problemen in der Entwicklung verwenden.
Auf ADOPTERS.md finden Sie einige der Organisationen, die Jaeger heute nutzen. Wenn Sie Ihre Organisation zur Liste hinzufügen möchten, kommentieren Sie bitte unsere Umfrageausgabe.
Copyright (c) The Jaeger Authors. Apache 2.0-Lizenz.