Zum Hauptinhalt springen

Tempo

Tempo ist ein verteiltes Tracing-Backend, welches das Speichern von Traces ermöglicht, die von Ihrer Applikation ausgegeben werden. Durch die direkte Integration in Grafana können Sie bestimmte Traces abfragen und nach ihnen suchen.

Details

Wir bieten Kunden, die verteiltes Tracing in ihrer Applikation verwenden möchten, Tempo als Speicher-Backend an. Der Anwendungs-Code kann durch die Verwendung des OpenTelemetry Frameworks instrumentiert werden. Traces können über gRPC oder HTTPS an die Tempo-Instanz gesendet werden. Alle gespeicherten Traces/Spans können dann mithilfe einer Grafana-Instanz abgefragt werden.

Architektur

Docusaurus themed imageDocusaurus themed image

Verfügbarkeit

Tempo ist als optionaler Service verfügbar und kann über das Cockpit erstellt werden. Mit Tempo können Traces gespeichert werden, die von Applikationen versendet werden. Die Anwendungen können auf Nine Kubernetes Engine (NKE) oder extern laufen.

Beim Deployment einer Nine Managed Grafana-Instanz, wird in ihr automatisch eine dazugehörige Tempo-Datenquelle konfiguriert. Es ist weiterhin möglich, die Tempo-Instanz von einer extern laufenden Grafana-Instanz aus abzufragen.

Verwendung

Wenn Ihr Anwendungscode noch nicht für das Versenden von Traces instrumentiert ist, besuchen Sie bitte die OpenTelemetry Getting Started Guides. Diese bieten eine exzellente Einführung in die API und das SDK für verschiedene Programmiersprachen. Sie werden einen OTLP Exporter benötigen, um Traces an Tempo zu senden. Die Konfiguration hängt davon ab, wo der Anwendungsbetrieb stattfindet.

Traces von Applikationen auf NKE senden

Applikationen, die auf NKE betrieben werden, können den automatisch erstellten OpenTelemetry Collector verwenden. Der Collector ermöglicht es, Traces zu sammeln, um sie dann gebündelt an die Tempo-Instanz zu versenden. Tempo Authentifizierungs-Informationen werden automatisch in den Collector eingefügt.

Sie müssen nur den OTLP Endpunkt konfigurieren, indem Sie ihn auf die URL des Collectors verweisen, die im Cockpit angezeigt wird. Sie können dafür die vordefinierte OTEL_EXPORTER_OTLP_ENDPOINT Umgebungsvariable nutzen.

Traces von Applikationen ausserhalb von NKE senden

Bei Applikationen, die nicht auf einen NKE Cluster deployed werden, müssen Traces direkt an die Tempo-Instanz gesendet werden. Sie können Traces entweder über gRPC oder HTTPS versenden. Die URL für Tempo ist im Cockpit zu finden. Bitte stellen Sie sicher, dass Sie die Authentifizierungs-Informationen für Ihre Tempo-Instanz mit einfügen. Auch diese werden im Cockpit angezeigt. Das folgende Beispiel zeigt, wie ein OTLP gRPC Exporter in golang konfiguriert werden kann:

package example

import (
"context"
"crypto/tls"
"encoding/base64"
"fmt"

"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
)

func grpcExporter(ctx context.Context, username, password, host string) (*otlptrace.Exporter, error) {
conn, err := grpc.DialContext(
ctx, fmt.Sprintf("dns:%s", host),
grpc.WithBlock(),
// we use a default tls.Config, which enforces TLS verification.
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
)
if err != nil {
return nil, fmt.Errorf("error dialing gRPC: %w", err)
}

auth := username + ":" + password
return otlptracegrpc.New(
ctx, otlptracegrpc.WithGRPCConn(conn),
otlptracegrpc.WithHeaders(
map[string]string{
"Authorization": "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)),
},
),
)
}

Traces in Grafana ansehen

Um die gesendeten Traces in Grafana zu sehen, müssen Sie:

  1. Den „Explore“ Modus in der Navigation links auswählen
  2. Als Datenquelle oben Tempo auswählen
  3. Den Abfragetyp „Search“ auswählen
  4. Traces weiter eingrenzen, indem Sie sie nach den verfügbaren Feldern filtern („Service Name“, „Span Name“, etc.)
  5. Oben rechts auf „Run Query“ klicken
  6. Die Trace-ID auswählen, um die Traces und alle dazugehörigen Spans anzuzeigen

grafana-steps-to-view-traces