v1.metrics – Übersicht

In diesem Dokument wird beschrieben, wie Messwertdaten, die mit der Telemetry API (OTLP) an your Google Cloud project 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 Google Cloud-unterstütztes Open-Source-Projekt, bei dem Google Cloud Entwickler dafür sorgen, dass die Aufnahme und Visualisierung Ihrer Telemetriedaten unterstützt wird.

Eine Anleitung zum Konfigurieren von OpenTelemetry zum Senden von OTLP-Messwerten an Cloud Monitoring finden Sie in der Übersicht zur Aufnahme von OTLP-Messwerten.

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 den Cloud Monitoring-Messwertstrukturen zugeordnet. In diesem Abschnitt wird Folgendes beschrieben:

Zuordnung überwachter Ressourcen

Alle Messwertpunkte werden mit der Prometheus-Zuordnung für Google Cloud Managed Service for Prometheus geschrieben, indem die Prometheus-Zuordnung verwendet wird.

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 die Abfragefähigkeit und Skalierbarkeit.

Wir empfehlen, beim Festlegen von Werten für diese Labels so explizit wie möglich zu sein. Wir haben jedoch eine Fallback-Logik implementiert, die verwendet wird, wenn keine expliziten Werte vorhanden sind.

In der folgenden Tabelle sind die Quellen der Werte für Labels in der Reihenfolge ihrer Priorität aufgeführt:

prometheus-target-Label Verwendeter Wert (in Prioritätsreihenfolge)
location (erforderlich)
  • location-Attribut
  • cloud.availability_zone-Attribut
  • cloud.region-Attribut
cluster
  • cluster-Attribut
  • k8s.cluster.name-Attribut
  • __gce__, wenn das cloud.platform Attribut gcp_compute_engine ist
  • __run__, wenn das cloud.platform-Attribut gcp_cloud_run ist
  • Leerer String
namespace
  • namespace-Attribut
  • k8s.namespace.name-Attribut
  • service.namespace-Attribut
  • Leerer String
job
  • job-Attribut
  • "service.namespace" + "/" + service.namespace Attribut
  • service.name-Attribut
  • service.name-Attribut, wenn nicht unknown_service:foo
  • faas.name-Attribut
  • k8s.deployment.name-Attribut
  • k8s.statefulset.name-Attribut
  • k8s.job.name-Attribut
  • k8s.cronjob.name-Attribut
  • service.name Attribut, wenn unknown_service:foo
  • Leerer String
instance
Punkt ablehnen, wenn leer
  • instance-Attribut
  • service.instance.id-Attribut
  • faas.instance-Attribut
  • k8s.pod.name:k8s.container.name-Attribut
  • k8s.pod.name-Attribut, wenn kein Containername vorhanden ist
  • host.id-Attribut

Messwertzuordnung

Messwerte werden in das Prometheus-Zeitachsenformat konvertiert. Messwertnamen dürfen entweder keine Domain oder die Domain prometheus.googleapis.com haben. Nach der Konvertierung 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 durch die Konvertierung ein target_info Messwert hinzugefügt, der alle Ressourcenattribute außer service.name, service.instance.id, und service.namespace enthält.

Alle OTLP INT64 Messwerte werden in Cloud Monitoring in den DOUBLE Werttyp ü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 Zeitachse in Monarch befindet. Die häufigste Folge der Unterstützung von INT64-Werten sind Kollisionen, die nur durch das Löschen eines Messwerts behoben werden können.

Zuordnung von Prometheus-Messwerten

Messwerttypen werden wie folgt zugeordnet:

  • OTLP-Messgerät wird Cloud Monitoring Messgerät zugeordnet.
  • OTLP-Summe wird wie folgt zugeordnet:
    • Cloud Monitoring Messgerät wenn is_monotonic auf false gesetzt ist.
    • Cloud Monitoring Summe wenn aggregation_temporality auf AGGREGATION_TEMPORALITY_CUMULATIVE gesetzt ist.
    • Cloud Monitoring Delta , wenn aggregation_temporality auf AGGREGATION_TEMPORALITY_DELTA gesetzt ist.
  • OTLP-Histogramm wird Cloud Monitoring Verteilung mit einer Messwertart vom Typ Summe oder Delta, je nach Wert von aggregation_temporality zugeordnet.
  • OTLP-Zusammenfassungsmesswerte werden in einzelne Zeitachsen für jede Komponente erweitert: count, sum und jedes quantile.
    • Die Namen für Messwerte vom Typ „Anzahl“ und „Summe“ werden mit _count oder _sum bzw. ergänzt und als kumulative Cloud Monitoring Messwerte vom Typ „DOUBLE“ geschrieben.
    • Jedes Quantil wird zu einer eigenen Gauge-Zeitachse vom Typ DOUBLE mit einem quantile-Label.

In der folgenden Tabelle ist die Messwertzuordnung zusammengefasst:

OTLP Punktart Monitoring Messwertart Monitoring Werttyp Suffix Hinweise
GAUGE GAUGE DOUBLE /gauge  
ANZEIGE (metric.metadata["prometheus.type"]="unknown") GAUGE DOUBLE /unknown Prometheus-Unbekannte werden vom OpenTelemetry Collector in einen Zähler und ein Messgerät aufgeteilt.
SUMME (monotonic, CUMULATIVE) CUMULATIVE DOUBLE /counter  
SUMME (monotonic, CUMULATIVE, metric.metadata["prometheus.type"]="unknown") CUMULATIVE DOUBLE /unknown:counter Prometheus-Unbekannte werden vom OpenTelemetry Collector in einen Zähler und ein Messgerät aufgeteilt.
SUMME (monotonic, DELTA) DELTA DOUBLE /delta  
SUMME (non-monotonic, CUMULATIVE) GAUGE DOUBLE /gauge  
SUMME (non-monotonic, DELTA) Nicht unterstützt UpDownCounters mit Delta-Temporarität werden nicht unterstützt.
HISTOGRAMM (CUMULATIVE) CUMULATIVE VERTEILUNG mit expliziten Buckets /histogram  
EXPONENTIELLES HISTOGRAMM (CUMULATIVE) CUMULATIVE VERTEILUNG mit exponentiellen Buckets /histogram  
HISTOGRAMM (DELTA) DELTA VERTEILUNG mit expliziten Buckets /histogram:delta  
EXPONENTIELLES HISTOGRAMM (DELTA) DELTA VERTEILUNG mit exponentiellen Buckets /histogram:delta  
ZUSAMMENFASSUNG
(Summe,
Anzahl,
Quantil)
 
CUMULATIVE
CUMULATIVE
ANZEIGE

DOUBLE
DOUBLE
DOUBLE
 
_sum/summary:counter
_count/summary
/summary
Zusammenfassungsdatenpunkte werden als mehrere Zeitachsen geschrieben, eine für Anzahl, Summe und jedes berechnete Quantil. Quantilmesswerte werden auch mit einem quantile Label generiert.

Unterschiede zwischen dem googlemanagedprometheus-Exporter und der Telemetry API

Die Telemetry API (telemetry.googleapis.com) verarbeitet Messwerte anders als der googlemanagedprometheus Exporter:

  • Die Telemetry API erlaubt die Zeichen Punkt (.) und Schrägstrich (/) mit in Messwertnamen. Der googlemanagedprometheus-Exporter konvertiert alle Instanzen dieser Zeichen in das Unterstrichzeichen (_). Ein OTLP-Messwert mit dem Namen prometheus.googleapis.com/foo.bar/gauge wird beispielsweise vom OTLP-Exporter unverändert exportiert, vom googlemanagedprometheus-Exporter jedoch als prometheus.googleapis.com/foo_bar/gauge.

    Wenn die Messwerte aufgenommen werden, erstellt Cloud Monitoring Messwertdeskriptoren auf Grundlage der Namen. Der Unterschied in der Verarbeitung der Zeichen Punkt (.) und Schrägstrich (/) durch die Aufnahmepfade führt dazu, dass sich die resultierenden Messwertdeskriptoren zwischen Messwerten, die mit dem googlemanagedprometheus-Exporter aufgenommen wurden, und solchen, die mit dem otlphttp-Exporter aufgenommen wurden, unterscheiden. Wenn Sie beide Aufnahmepfade verwenden, haben Sie zwei Messwertgruppen. Um bei der Abfrage vollständige Ergebnisse zu erhalten, müssen Sie die Ergebnisse aus den Prometheus- und OTLP-Versionen der Messwerte manuell zusammenführen.

  • Die Telemetry API hängt keine Einheit an einen Messwertnamen an, wenn eine Einheit vorhanden ist, und sie hängt kein _total-Suffix an Zähler an. Ein Messwert, der mit der Telemetry API als prometheus.googleapis.com/foo/counter exportiert wird, wird vom googlemanagedprometheus-Exporter als prometheus.googleapis.com/foo_seconds_total/counter exportiert. Dieser Unterschied gilt auch für die Suffixe _total und _ratio.

  • Die API synthetisiert den Wert sum_of_squared_deviation für Verteilungswerte, die aus exponentiellen Histogrammen abgeleitet wurden. Der googlemanagedprometheus-Exporter legt dieses Feld für exponentielle Histogramme nicht fest.

  • Die API konvertiert alle ganzzahligen Punktwerte für Prometheus-Messwerte in Double-Werte.

  • Die API legt die Labels scope_version oder scope_name nicht fest, wenn diese Labels leere Werte haben.

Aufgenommene Daten ansehen

Messwertdaten, die über die Telemetry API aufgenommen werden, können auf der Seite Metrics Explorer angezeigt werden. Informationen zum Ansehen und Darstellen Ihrer Messwertdaten in Diagrammen finden Sie unter Diagramme mit dem Metrics Explorer erstellen.