In diesem Dokument wird beschrieben, wie Messwertdaten, die mit der Telemetry (OTLP) API an Ihr Google Cloud Projekt gesendet werden, den Cloud Monitoring-Strukturen zugeordnet werden. Diese API implementiert das OpenTelemetry OTLP-Protokoll. Sie können Daten an diese API senden, wenn Sie Ihre Anwendungen mit einem otlphttp-Exporter und einem OpenTelemetry Collector instrumentieren oder wenn Sie die OpenTelemetry SDKs verwenden.
OpenTelemetry ist ein von Google Cloudunterstütztes Open-Source-Projekt mit Google CloudEntwicklern, die für die Unterstützung beim Erfassen und Visualisieren Ihrer Telemetriedaten sorgen.
OTLP-Messwerte in Cloud Monitoring
Wenn Messwerte mit einem OpenTelemetry Collector und dem otlphttp-Exporter in Cloud Monitoring aufgenommen oder direkt mit einem OpenTelemetry SDK gesendet werden, werden die OTLP-Messwerte Cloud Monitoring-Messwertstrukturen zugeordnet.
In diesem Abschnitt wird Folgendes beschrieben:
- Die Zuordnung zwischen OTLP-Ressourcen und überwachten Cloud Monitoring-Ressourcen.
- Die Zuordnung zwischen OTLP-Messwerten und Cloud Monitoring-Messwerten.
Zuordnung überwachter Ressourcen
Alle Messwertpunkte werden mit der Prometheus-Zuordnung so geschrieben, wie sie für Google Cloud Managed Service for Prometheus sind.
Prometheus-Zuordnung
Für Prometheus-Messwerte muss der überwachte Ressourcentyp prometheus_target verwendet werden.
Die folgenden Labels für den Ressourcentyp prometheus_target werden verwendet, um Daten in Monarch zu schematisieren und effizient zu speichern. Je genauer Sie Werte für diese Attribute angeben, desto besser sind Abfragefähigkeit und Skalierbarkeit.
Wir empfehlen dringend, die Werte für diese Labels so explizit wie möglich festzulegen. Wir haben jedoch eine Fallback-Logik implementiert, die verwendet wird, wenn keine expliziten Werte vorhanden sind.
In der folgenden Tabelle sind die Quellen für Werte für Labels in der Reihenfolge ihrer Priorität aufgeführt:
prometheus-target-Label |
Verwendeter Wert (in Prioritätsreihenfolge) |
|---|---|
location (erforderlich) |
|
cluster |
|
namespace |
|
job |
|
instancePunkt ablehnen, wenn leer |
|
Messwertzuordnung
Messwerte werden in das Prometheus-Zeitreihenformat konvertiert. Messwertnamen dürfen entweder keine Domain oder die Domainprometheus.googleapis.com haben.
Nach der Umstellung enthält der Messwertname das Präfix prometheus.googleapis.com und ein zusätzliches Suffix, das auf der OTLP-Punktart basiert. Der resultierende Cloud Monitoring-Messwert hat die folgende Struktur:
prometheus.googleapis.com/{metric_name}/{suffix}
Außerdem wird für jede eindeutige OpenTelemetry-Ressource der Messwert target_info hinzugefügt, der alle Ressourcenattribute mit Ausnahme von service.name, service.instance.id und service.namespace enthält.
Alle OTLP-Messwerte vom Typ INT64 werden in Cloud Monitoring in den Werttyp DOUBLE übersetzt, auch wenn der Collector den Werttyp als INT64 angibt.
Diese Änderung wird vorgenommen, da der Werttyp nicht geändert werden kann, sobald sich eine Zeitreihe in Monarch befindet. Die häufigste Folge der Unterstützung von INT64-Werten ist, dass es zu Konflikten kommt, die nur durch das Löschen eines Messwerts behoben werden können.
Zuordnung von Prometheus-Messwerten
Messwerttypen werden so zugeordnet:
- OTLP-Messgeräte werden dem Cloud Monitoring-Messwerttyp gauge zugeordnet.
- OTLP-Summen werden so zugeordnet:
- OTLP-Histogramm wird Cloud Monitoring-Verteilung mit dem Messwerttyp kumulativ oder Delta zugeordnet, je nach Wert von
aggregation_temporality. - OTLP-Zusammenfassungsmesswerte werden in einzelne Zeitreihen für jede Komponente aufgeschlüsselt:
count,sumund jedequantile.- Die Namen für Zähl- und Summenmesswerte haben das Suffix
_countbzw._sumund werden als kumulative Cloud Monitoring-Messwerte vom Typ DOUBLE geschrieben. - Jedes Quantil wird zu einer eigenen Messgerät-Zeitachse vom Typ DOUBLE mit dem Label
quantile.
- Die Namen für Zähl- und Summenmesswerte haben das Suffix
Die folgende Tabelle fasst die Messwertzuordnung zusammen:
| OTLP-Punktart | Monitoring metric kind | Werttyp überwachen | Suffix | Hinweise |
|---|---|---|---|---|
| ANZEIGE | ANZEIGE | DOUBLE | /gauge | |
| GAUGE (metric.metadata["prometheus.type"]="unknown") | ANZEIGE | DOUBLE | /unknown | „Prometheus Unknowns“ werden vom OpenTelemetry Collector in einen Zähler und einen Messwert aufgeteilt. |
| SUMME (monoton, CUMULATIVE) | CUMULATIVE | DOUBLE | /counter | |
| SUM (monotonic, CUMULATIVE, metric.metadata["prometheus.type"]="unknown") | CUMULATIVE | DOUBLE | /unknown:counter | „Prometheus Unknowns“ werden vom OpenTelemetry Collector in einen Zähler und einen Messwert aufgeteilt. |
| SUMME (monoton, DELTA) | DELTA | DOUBLE | /delta | |
| SUMME (nicht monoton, CUMULATIVE) | ANZEIGE | DOUBLE | /gauge | |
| HISTOGRAMM (KUMULATIV) | CUMULATIVE | VERTEILUNG mit expliziten Buckets | /histogram | |
| EXPONENTIELLES HISTOGRAMM (KUMULATIV) | CUMULATIVE | VERTEILUNG mit exponentiellen Buckets | /histogram | |
| HISTOGRAMM (DELTA) | DELTA | VERTEILUNG mit expliziten Buckets | /histogram:delta | |
| EXPONENTIELLES HISTOGRAM (DELTA) | DELTA | VERTEILUNG mit exponentiellen Buckets | /histogram:delta | |
| SUMMARY (sum, count, quantile) |
CUMULATIVE CUMULATIVE GAUGE |
DOUBLE DOUBLE DOUBLE |
_sum/summary:counter _count/summary /summary |
Zusammenfassungsdatenpunkte werden als mehrere Zeitreihen geschrieben, eine für die Anzahl, die Summe und jedes berechnete Quantil. Quantilmesswerte werden auch mit dem Label quantile generiert. |
Unterschiede zwischen dem googlemanagedprometheus-Exporter und der Telemetry API
In der Telemetry API (telemetry.googleapis.com) werden Messwerte anders als im googlemanagedprometheus-Exporter behandelt:
Die Telemetry API erlaubt die Zeichen Punkt (
.) und Schrägstrich (/) in Messwertnamen. Beimgooglemanagedprometheus-Export werden alle Instanzen dieser Zeichen in den Unterstrich (_) umgewandelt. Ein OTLP-Messwert namensprometheus.googleapis.com/foo.bar/gaugewird beispielsweise vom OTLP-Exporter unverändert exportiert, vomgooglemanagedprometheus-Exporter jedoch alsprometheus.googleapis.com/foo_bar/gauge.Wenn die Messwerte aufgenommen werden, erstellt Cloud Monitoring Messwertdeskriptoren auf Grundlage der Namen. Aufgrund der unterschiedlichen Verarbeitung von Punkt (
.) und Schrägstrich (/) durch die Aufnahmepfade unterscheiden sich die resultierenden Messwertdeskriptoren zwischen Messwerten, die mit demgooglemanagedprometheus-Exporter aufgenommen werden, und Messwerten, die mit demotlphttp-Exporter aufgenommen werden. Wenn Sie beide Erfassungspfade verwenden, haben Sie zwei Messwertgruppen. Wenn Sie Abfragen ausführen, müssen Sie die Ergebnisse der Prometheus- und OTLP-Versionen der Messwerte manuell zusammenführen, um vollständige Ergebnisse zu erhalten.Bei der Telemetry API wird kein Suffix an einen Messwertnamen angehängt, wenn eine Einheit vorhanden ist, und es wird kein
_total-Suffix an Zähler angehängt. Ein Messwert, der mit der Telemetry API alsprometheus.googleapis.com/foo/counterexportiert wird, wird vomgooglemanagedprometheus-Exporter alsprometheus.googleapis.com/foo_seconds_total/counterexportiert. Dieser Unterschied gilt auch für die Suffixe_totalund_ratio.Die API synthetisiert den
sum_of_squared_deviation-Wert für Verteilungswerte, die aus exponentiellen Histogrammen abgeleitet werden. Dergooglemanagedprometheus-Exporter legt dieses Feld für exponentielle Histogramme nicht fest.Die API konvertiert alle Ganzzahlwerte in Double-Werte für Prometheus-Messwerte.
Die API legt die Labels
scope_versionoderscope_namenicht fest, wenn diese Labels leere Werte haben.
Wo kann ich aufgenommene Daten ansehen?
Messwertdaten, die über die Telemetry API aufgenommen werden, können auf der Seite Metrics Explorer aufgerufen werden. Informationen zum Ansehen und Darstellen von Messwertdaten finden Sie unter Diagramme mit dem Metrics Explorer erstellen.