Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Erste Schritte mit Grafana Tempo

Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Lernen wir die Grundlagen von Grafana Tempo, einem verteilten Tracing-Backend.

Verteilte Ablaufverfolgung ist der Weg, um detaillierte Informationen über die Systemleistung zu erhalten. Auf diese Weise können Sie den Lebenszyklus einer Anforderung visualisieren, die die Anwendung durchläuft. Die Anwendung kann aus mehreren Diensten bestehen, die auf einem einzelnen Knoten vorhanden oder auf mehrere Knoten verteilt sind.

Durch die Verwendung der verteilten Ablaufverfolgung erhalten Sie eine konsolidierte Ansicht aller Dienste. Und Grafana Tempo dreht sich alles darum.

What is Grafana Tempo?

Auf der diesjährigen ObservabilityCon-Konferenz gab es einige wichtige Updates von Grafana Labs, und Grafana Tempo war eine davon. Grafana Labs hat sein Open-Source-Portfolio um ein weiteres Projekt, "Grafana Tempo", erweitert.

Grafana Tempo ist ein Open-Source-Backend für die verteilte Ablaufverfolgung, das hochgradig skalierbar und einfach zu verwenden ist. Tempo ist vollständig kompatibel mit anderen Tracing-Protokollen wie Zipkin, Jaeger, OpenTelemetry, und OpenCensus. Derzeit unterstützt es die Tempo Data Discovery Engine in Loki und überwacht Plattformen wie z Prometheus und Grafana. Grafana 7.3+ bietet eine nahtlose Erfahrung zwischen Grafana und Tempo.

Why use Tempo?

Tempo wird verwendet, um die Metriken, Traces und Protokolle zu korrelieren. Es gibt Situationen, in denen ein Benutzer mehrmals dieselbe Art von Fehler erhält. Wenn ich verstehen will, was passiert, muss ich mir die genauen Spuren ansehen. Aber aufgrund von Downsampling wären einige wertvolle Informationen, nach denen ich suchen könnte, verloren gegangen. Mit Tempo müssen wir jetzt verteilte Tracing-Daten nicht mehr herunterrechnen. Wir können die komplette Spur in speichern Objektspeicher wie S3 oder GCS, was Tempo sehr kosteneffizient macht.

Außerdem ermöglicht Tempo Ihnen ein schnelleres Debuggen / Beheben von Problemen, indem Sie schnell von Metriken zu den relevanten Spuren der spezifischen Protokolle wechseln können, in denen einige Probleme aufgezeichnet wurden.

Nachfolgend finden Sie die in Tempo verwendeten Konfigurationsoptionen.

  • Verteiler: Diese werden verwendet, um Empfangsoptionen für den Empfang von Bereichen zu konfigurieren und diese dann an die Ingester zu senden.
  • Einnahme: Diese werden verwendet, um Stapel von Traces zu erstellen und diese zur Speicherung an TempoDB zu senden.
  • Compactor: Es überträgt Blöcke aus dem Speicher wie S3 oder GCS, kombiniert sie und schreibt sie zurück in den Speicher.
  • Storage: Hiermit wird TempoDB konfiguriert. Sie müssen den Namen des Speicher-Backends (S3 oder GCS) mit anderen Parametern in dieser Konfiguration angeben.
  • Mitgliederliste: Es wird zur Koordination zwischen Tempo-Komponenten verwendet.
  • Authentifizierung / Server: Tempo verwendet Weaveworks / Common Server. Es wird verwendet, um Serverkonfigurationen festzulegen.

Tempo Architecture

Tempo Architektur

Das obige Diagramm zeigt die Arbeitsarchitektur von Grafana Tempo.

Erstens empfängt der Distributor Spans in verschiedenen Formaten von Zipkin, Jaeger, OpenTelemetry, OpenCensus und sendet diese Spans an die Ingester, indem er die Trace-ID hasht. Ingester erstellt dann Stapel von Traces, die als Blöcke bezeichnet werden.

Anschließend werden diese Blöcke an den Backend-Speicher (S3 / GCS) gesendet. Wenn Sie eine Trace-ID haben, die Sie beheben möchten, verwenden Sie die Grafana-Benutzeroberfläche und fügen die Trace-ID in die Suchleiste ein. Jetzt ist der Abfrager dafür verantwortlich, die Details der von Ihnen eingegebenen Trace-ID entweder vom Ingester oder vom Objektspeicher abzurufen.

Zunächst wird überprüft, ob diese Trace-ID im Ingester vorhanden ist. Wenn es nicht gefunden wird, überprüft es das Speicher-Backend. Es verwendet einen einfachen HTTP-Endpunkt, um die Traces verfügbar zu machen. In der Zwischenzeit nimmt der Verdichter die Blöcke aus dem Speicher, kombiniert sie und sendet sie zurück an den Speicher, um die Anzahl der Blöcke im Speicher zu verringern.

Setup Tempo using Docker

In diesem Abschnitt werde ich Grafana Tempo Schritt für Schritt mit einrichten Docker. Zunächst benötigen Sie ein Tempo-Backend. Richten Sie daher ein Docker-Netzwerk ein.

[geekflare@geekflare ~]$ docker network create docker-tempo

Laden Sie die Tempo-Konfigurationsdatei herunter.

[geekflare@geekflare ~]$ curl -o tempo.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-local.yaml

Unten finden Sie eine Liste der Protokolloptionen, die Sie erhalten:

Protokoll Hafen
Öffnen Sie die Telemetrie 55680
Jaeger - Thrift Compact 6831
Jaeger - Thrift Binary 6832
Jaeger - Thrift HTTP 14268
Jaeger - GRPC 14250
Zipkin 9411

Führen Sie mithilfe der Tempo-Konfigurationsdatei einen Docker-Container aus. Hier wähle ich Jaeger - Thrift Compact-Format (Port 6831) zum Senden der Traces.

[geekflare@geekflare ~]$ docker run -d --rm -p 6831:6831/udp --name tempo -v $(pwd)/tempo-local.yaml:/etc/tempo-local.yaml --network docker-tempo grafana/tempo:latest -config.file=/etc/tempo-local.yaml

Jetzt müssen Sie einen Tempo-Abfragecontainer ausführen. Laden Sie also zuerst die Konfigurationsdatei für die Tempo-Abfrage herunter.

[geekflare@geekflare ~]$ curl -o tempo-query.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-query.yaml

Führen Sie mithilfe der Konfigurationsdatei für die Tempo-Abfrage einen Docker-Container aus.

[geekflare@geekflare ~]$ docker run -d --rm -p 16686:16686 -v $(pwd)/tempo-query.yaml:/etc/tempo-query.yaml --network docker-tempo grafana/tempo-query:latest --grpc-storage-plugin.configuration-file=/etc/tempo-query.yaml

Jetzt ist die Jaeger-Benutzeroberfläche unter verfügbar http://localhost:16686, Wie nachfolgend dargestellt.

jaeger ui - geekflare

In der Suchleiste können Sie die Ablaufverfolgungs-ID aus einem Protokoll hinzufügen, das Sie beheben möchten, und die Ablaufverfolgungen werden für Sie generiert.

traceid - neu

Running a Demo Application on Tempo

Es ist Zeit, ein Demo-Beispiel von Grafana Tempo zu starten. Ich werde ein Docker-Compose-Beispiel ausführen. Wenn Sie also dasselbe versuchen, muss Docker-Compose auf Ihrem Computer installiert sein.

Laden Sie die Grafana Tempo-Zip-Datei herunter: https://github.com/grafana/tempo

Extrahieren Sie es in den Home-Ordner und gehen Sie zu Docker-komponieren Verzeichnis. Sie finden mehrere Beispiele für Docker-Compose. Ich verwende das Beispiel, in dem die Daten einer Anwendung lokal gespeichert werden.

[geekflare@geekflare ~]$ cd tempo-master/example/docker-compose/
[geekflare@geekflare docker-compose]$ ls
docker-compose.loki.yaml docker-compose.s3.minio.yaml docker-compose.yaml etc
example-data readme.md tempo-link.png

Führen Sie den folgenden Befehl aus, um den Stapel zu starten.

[geekflare@geekflare docker-compose]$ docker-compose up -d
Starting docker-compose_prometheus_1 ... done
Starting docker-compose_tempo_1 ... done
Starting docker-compose_grafana_1 ... done
Starting docker-compose_tempo-query_1 ... done
Starting docker-compose_synthetic-load-generator_1 ... done

Sie können sehen, es hat Container für Grafana, Loki, Tempo, Tempo-Abfrage und gestartet Prometheus.

[geekflare@geekflare docker-compose]$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS         PORTS                                                                                                      NAMES
84cd557ce07b   grafana/tempo-query:latest                 "/go/bin/query-linux…"   10 minutes ago   Up 4 seconds   0.0.0.0:16686->16686/tcp                                                                                   docker-compose_tempo-query_1
f7cd9cf460d9   omnition/synthetic-load-generator:1.0.25   "./start.sh"             10 minutes ago   Up 4 seconds                                                                                                              docker-compose_synthetic-load-generator_1
6d9d9fbdb8f1   grafana/grafana:7.3.0-beta1                "/run.sh"                10 minutes ago   Up 6 seconds   0.0.0.0:3000->3000/tcp                                                                                     docker-compose_grafana_1
d8574ea25028   grafana/tempo:latest                       "/tempo -config.file…"   10 minutes ago   Up 6 seconds   0.0.0.0:49173->3100/tcp, 0.0.0.0:49172->14268/tcp                                                          docker-compose_tempo_1
5f9e53b5a09c   prom/prometheus:latest                     "/bin/prometheus --c…"   10 minutes ago   Up 6 seconds   0.0.0.0:9090->9090/tcp                                                                                     docker-compose_prometheus_1

Sie können auch zu Ihrem Browser gehen und überprüfen, ob Grafana, Jaeger UI, Prometheus ausgeführt werden.

Grafana

Prometheus

Jetzt generiert der synthetische Lastgenerator, der in einem Container läuft, Trace-IDs, die er in das Tempo einfügt. Führen Sie den folgenden Befehl aus, und Sie können die Protokolle anzeigen.

[geekflare@geekflare docker-compose]$ docker-compose logs -f synthetic-load-generator
Attaching to docker-compose_synthetic-load-generator_1
synthetic-load-generator_1 
| using params: 
--jaegerCollectorUrl http://tempo:14268
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /product, 2880 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /cart, 14400 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /checkout, 480 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 17867942c5e161f2 for service frontend route /currency
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 3d9cc23c8129439f for service frontend route /shipping
synthetic-load-generator_1 

Dies sind die Ablaufverfolgungs-IDs, die Sie übergeben müssen, um Ablaufverfolgungen zu generieren.

Spuren neu

Ich kopiere eine der Trace-IDs und füge sie in die Jaeger-UI-Suchleiste ein.

Traceid

Sie können sehen, dass die Traces für die von mir angegebene Trace-ID erfolgreich generiert wurden.

Fazit

Das war also alles über Grafana Tempo. Verwenden Sie Tempo, um Traces zu generieren, um die Metriken und Probleme in Ihrem System zu verstehen Protokolle im Detail.

Alles wird in Tempo erfasst, und Sie werden kein Detail verpassen, da früher ein Downsampling durchgeführt wurde. Tempo ist für Entwickler oder Produktionsteams unkompliziert, um die Hauptursache für die Fehler oder Warnungen zu verstehen, die in den Protokollen auftreten können.

Danke an unsere Sponsoren
Weitere großartige Lektüren zum Thema Cloud Computing
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder