Messwerte und Traces mithilfe von Beispielen korrelieren

In diesem Dokument werden Beispiele beschrieben, bei denen es sich um Beispieldatenpunkte handelt, die an einen Messwertdatenpunkt angehängt sind. Eine Verwendung von Beispielen ist das Speichern eines Links zu einem Trace, mit dem Sie Ihre Messwert- und Trace-Daten korrelieren können. In diesem Dokument wird auch beschrieben, wie Sie mit OpenTelemetry Beispiele generieren können.

Über die Beispiele

Beispiele sind eine Möglichkeit, beliebige Daten mit Messwertdaten zu verknüpfen. Sie können sie verwenden, um nicht messwertbezogene Daten mit Messungen zu verknüpfen. Eine Verwendung von Beispielen ist die Verknüpfung von Trace-Daten mit Messwertdaten. In Cloud Monitoring können Beispiele an Messwertdaten mit dem Werttyp Distribution angehängt werden. Verteilungsmesswerte erfassen viele Messungen und gruppieren sie in Buckets. Jeder "Punkt" ist ein Histogramm, also ein Array, das die Bucket-Anzahl auflistet. Die tatsächlichen Messwerte werden nicht beibehalten, sondern nur die Bucket-Zählwerte. Weitere Informationen finden Sie unter Verteilungsmesswerte.

Wenn ein Messwertdatenpunkt geschrieben wird, kann ein Array von Exemplar-Objekten an diese Daten angehängt werden. Wenn Beispiele verwendet werden, fügen Sie nützliche Informationen an die Messwertdaten an. Wenn OpenTelemetry beispielsweise ein Beispiel schreibt, wird ein Link an den aktuellen Span eines Trace angehängt.

Histogrammdaten werden normalerweise mithilfe einer Heatmap angezeigt. Wenn ein "Punkt" ein Beispiel enthält, annotiert Cloud Monitoring die Heatmap mit einem Punkt:

  • Wenn Sie zusammenfassende Informationen zum Messwertpunkt anzeigen möchten, aktivieren Sie die Kurzinfo für die Anmerkung.
  • Wählen Sie die Annotation aus, um auf den Trace zuzugreifen.

Beispielsweise verwendet die unter Traces und Messwerte mit Go generieren beschriebene Beispielanwendung OpenTelemetry, um Messwertdaten, Trace-Daten und Beispiele zu schreiben. Der folgende Screenshot zeigt den Wert des Messwerts prometheus/http_server_duration_milliseconds/histogram nach mehreren Ausführungen der Anwendung:

Beispiel für eine Heatmap mit mehreren Beispielen.

Der vorherige Screenshot zeigt mehrere Beispiele. Die Kurzinfo für ein Beispiel wird erweitert. Sie zeigt das Datum, den Trace-Namen, die Perzentile und einen Latenzwert an.

Wenn die Annotation ausgewählt ist, wird der im Beispiel verknüpfte Trace angezeigt:

Beispiel für die Trace-Details für ein Beispiel.

Wenn die angezeigten Informationen nicht ausreichend detailliert sind, können Sie In Trace ansehen aufrufen, wodurch derTrace-Explorer geöffnet wird. Auf dieser Seite sehen Sie Trace-Attribute und Zugriffslinks zu Logeinträgen.

OpenTelemetry-Beispiele aktivieren

Wie das vorherige Beispiel zeigt, können Sie OpenTelemetry so konfigurieren, dass Beispiele geschrieben werden, die den aktuellen Span eines Trace mit einer Messwertmessung verknüpfen. Damit Beispiele geschrieben werden können, müssen Sie Folgendes tun:

  1. Konfigurieren Sie sowohl den OpenTelemetry-Messwert als auch die Trace SDKs.
  2. Wenn Sie Beispiele für Ihre benutzerdefinierte Instrumentierung einbinden möchten, müssen Sie sicherstellen, dass der Messwert innerhalb eines Spans aufgezeichnet wird und Sie den Kontext aus dem Span mit der Messwertmessung übergeben.

    Beispielsweise folgt die Funktion computeSubrequests der vorherigen Anleitung. Die Funktion subRequestsHistogram.Record wird nach tracer.Start und vor span.End aufgerufen, was zurückgestellt wird. Beachten Sie auch, dass der Kontext ctx von tracer.Start an die Funktion Record übergeben wird:

    func computeSubrequests(r *http.Request, subRequests int) error {
    	// Add custom span representing the work done for the subrequests
    	ctx, span := tracer.Start(r.Context(), "subrequests")
    	defer span.End()
    
    	// Make specified number of http requests to the /single endpoint.
    	for i := 0; i < subRequests; i++ {
    		if err := callSingle(ctx); err != nil {
    			return err
    		}
    	}
    	// record number of sub-requests made
    	subRequestsHistogram.Record(ctx, int64(subRequests))
    	return nil
    }
    

    Weitere Informationen zu diesem Beispiel finden Sie unter Benutzerdefinierte Traces und Messwerte in Ihre Anwendung hinzufügen.

Nächste Schritte