Benutzerdefinierte Messwerte

Mit benutzerdefinierten Messwerten können Sie anwendungsspezifische Daten oder clientseitige Systemdaten erfassen. Die von Cloud Monitoring erfassten integrierten Messwerte liefern zwar Informationen zur Back-End-Latenz oder Laufwerknutzung, geben jedoch nicht Aufschluss darüber, wie viele Hintergrundroutinen die Anwendung hat. hervorgebracht.

Mit benutzerdefinierten Messwerten, auch als anwendungsspezifische Messwerte bezeichnet, können Sie Informationen definieren und erfassen, die mit den integrierten Cloud Monitoring-Messwerten nicht möglich sind. Sie erfassen diese Messwerte mithilfe einer API, die von einer Bibliothek zur Instrumentierung Ihres Codes bereitgestellt wird, und senden sie dann an eine Back-End-Anwendung wie Cloud Monitoring.

Sie können benutzerdefinierte Messwerte direkt mit der Cloud Monitoring API erstellen. Wir empfehlen jedoch, OpenCensus zu verwenden. Informationen zum Erstellen benutzerdefinierter Messwerte finden Sie in den folgenden Dokumenten:

  • Unter Benutzerdefinierte Messwerte mit OpenCensus erstellen wird beschrieben, wie Sie OpenCensus verwenden, eine Open-Source-Monitoring- und Tracing-Bibliothek. Mit dieser Bibliothek können Sie benutzerdefinierte Messwerte erstellen, ihnen Messwerte hinzufügen und die Messwertdaten nach Cloud Monitoring exportieren.

  • Unter Benutzerdefinierte Messwerte mit der API erstellen wird beschrieben, wie Sie mithilfe der Cloud Monitoring API benutzerdefinierte Messwerte erstellen und ihnen Messwerte hinzufügen. In diesem Dokument wird die Verwendung der Monitoring API mit Beispielen in den Programmiersprachen APIs Explorer, C#, Go, Java, Node.js, PHP, Python und Ruby erläutert.

Für Cloud Monitoring können Sie benutzerdefinierte Messwerte wie die integrierten Messwerte verwenden. Sie können sie grafisch darstellen, Benachrichtigungen dafür einrichten, sie lesen und sie anderweitig überwachen. Informationen zum Lesen von Messwertdaten finden Sie in den folgenden Dokumenten:

  • Unter Messwerte und Ressourcentypen durchsuchen erfahren Sie, wie Sie Ihre benutzerdefinierten und integrierten Messwerttypen auflisten und untersuchen. Sie können beispielsweise die Informationen in diesem Dokument verwenden, um alle benutzerdefinierten Messwertdeskriptoren in Ihrem Projekt aufzulisten.
  • Unter Messwertdaten lesen wird erläutert, wie Zeitachsendaten aus benutzerdefinierten und integrierten Messwerten mithilfe der Monitoring API abgerufen werden. In diesem Dokument wird beispielsweise beschrieben, wie Sie mit der API die CPU-Auslastung für VM-Instanzen in Ihrem Google Cloud-Projekt abrufen können.

Messwertdeskriptoren für benutzerdefinierte Messwerte

Jeder Messwerttyp muss einen Messwertdeskriptor haben, der definiert, wie die Messwertdaten organisiert sind. Der Messwertdeskriptor definiert auch die Labels für den Messwert und den Namen des Messwerts. Die Messwertlisten enthalten beispielsweise die Messwertdeskriptoren für alle integrierten Messwerttypen.

Wenn Sie benutzerdefinierte Messwerte verwenden, kann Cloud Monitoring den Messwertdeskriptor für Sie erstellen. Dazu werden die von Ihnen geschriebenen Messwertdaten verwendet. Alternativ können Sie den Messwertdeskriptor explizit erstellen und dann Messwertdaten schreiben. In beiden Fällen müssen Sie entscheiden, wie Sie Ihre Messwertdaten organisieren möchten.

Designbeispiel

Angenommen, Sie haben ein Programm, das auf einem einzelnen Computer ausgeführt wird und dieses Programm die Hilfsprogramme A und B aufruft. Sie möchten zählen, wie oft Programme A und B aufgerufen werden. Außerdem möchten Sie wissen, wann Programm A mehr als 10-mal pro Minute und Programm B mehr als 5-mal pro Minute aufgerufen wird. Nehmen wir abschließend an, Sie haben ein einzelnes Google Cloud-Projekt und möchten die Daten in die überwachte Ressource global schreiben.

In diesem Beispiel werden verschiedene Designs für Ihre benutzerdefinierten Messwerte beschrieben:

  • Sie verwenden zwei benutzerdefinierte Messwerttypen: Metric-type-A zählt die Aufrufe des Programms A und Metric-type-B zählt die Aufrufe für das Programm B. In diesem Fall enthalten Metric-type-A und Metric-type-B jeweils eine Zeitachse.

    Sie können mit diesem Datenmodus eine Benachrichtigungsrichtlinie mit zwei Bedingungen oder zwei Benachrichtigungsrichtlinien mit jeweils einer Bedingung erstellen. Eine Benachrichtigungsrichtlinie kann mehrere Bedingungen unterstützen, hat aber eine einzige Konfiguration für die Benachrichtigungskanäle.

    Dieses Modell eignet sich möglicherweise, wenn Sie nicht an den Ähnlichkeiten der Daten zwischen den beobachteten Aktivitäten interessiert sind. In diesem Beispiel sind die Aktivitäten die Rate, nach der die Programme A und B aufgerufen werden.

  • Sie verwenden einen einzelnen benutzerdefinierten Messwert und ein Label zum Speichern einer Programmkennzeichnung. Das Label kann beispielsweise den Wert A oder B speichern. Monitoring erstellt eine Zeitachse für jede eindeutige Kombination von Labels. Daher gibt es eine Zeitachse, deren Labelwert A und eine weitere Zeitachse mit dem Labelwert B ist.

    Wie beim vorherigen Modell können Sie eine einzelne Benachrichtigungsrichtlinie oder zwei Benachrichtigungsrichtlinien erstellen. Allerdings sind die Bedingungen für die Benachrichtigungsrichtlinie komplexer. Eine Bedingung, die einen Vorfall generiert, wenn die Aufrufrate für das Programm A einen Schwellenwert überschreitet, muss einen Filter verwenden, der nur Datenpunkte mit dem Labelwert A enthält.

    Ein Vorteil dieses Modells ist, dass die Berechnung von Verhältnissen einfach ist. Beispielsweise können Sie ermitteln, wie viel des Gesamtbetrags durch Aufrufe von A verursacht wird.

  • Sie verwenden einen einzelnen benutzerdefinierten Messwert, um die Anzahl der Aufrufe zu zählen, aber Sie nutzen kein Label, um aufzuzeichnen, welches Programm aufgerufen wurde. In diesem Modell gibt es eine einzelne Zeitachse, in der die Daten für die beiden Programme kombiniert werden. Sie können jedoch keine Benachrichtigungsrichtlinie erstellen, die Ihren Zielen entspricht, da die Daten für zwei Programme nicht getrennt werden können.

Mit den ersten beiden Designs können Sie Ihre Datenanalyseanforderungen erfüllen. der letzte Entwurf jedoch nicht.

Informationen zum Erstellen von Messwertdeskriptoren finden Sie unter Messwertdeskriptoren erstellen.

Namen benutzerdefinierter Messwerte

Definieren Sie beim Erstellen eines benutzerdefinierten Messwerts eine String-ID für den Messwerttyp. Dieser String muss unter den benutzerdefinierten Messwerten in Ihrem Google Cloud-Projekt eindeutig sein und muss ein Präfix verwenden, mit dem der Messwert als benutzerdefinierter Messwert gekennzeichnet wird. Die zulässigen Präfixe für Monitoring sind custom.googleapis.com/ und external.googleapis.com/prometheus. Das Präfix gefolgt von einem Namen, der beschreibt, was Sie erfassen. Weitere Informationen zur empfohlenen Benennung von benutzerdefinierten Messwerten finden Sie unter Namenskonventionen für Messwerte. Im Folgenden finden Sie Beispiele für die beiden Arten von IDs für Messwerttypen:

    custom.googleapis.com/cpu_utilization
    custom.googleapis.com/instance/cpu/utilization

Im vorherigen Beispiel gibt das Präfix custom.googleapis.com an, dass beide Messwerte benutzerdefinierte Messwerte sind. Beide Beispiele gelten für Messwerte, die die CPU-Auslastung messen. Sie verwenden jedoch unterschiedliche Organisationsmodelle. Wenn Sie eine große Anzahl benutzerdefinierter Messwerte erwarten, empfehlen wir die Verwendung einer hierarchischen Namensstruktur, die im zweiten Beispiel verwendet wird.

Alle Messwerttypen haben global eindeutige Kennzeichnungen, die Ressourcennamen genannt werden. Die Struktur eines Ressourcennamens für einen Messwerttyp sieht so aus:

projects/PROJECT_ID/metricDescriptors/METRIC_TYPE

Dabei ist METRIC_TYPE die String-ID des Messwerttyps. Wenn die vorherigen Messwertbeispiele im Projekt my-project-id erstellt werden, würden ihre Ressourcennamen für diese Messwerte so aussehen:

    projects/my-project-id/metricDescriptors/custom.googleapis.com/cpu_utilization
    projects/my-project-id/metricDescriptors/custom.googleapis.com/instance/cpu/utilization

Name oder Typ? Im Messwertdeskriptor speichert das Feld name den Ressourcennamen des Messwerttyps und das Feld type speichert den String METRIC_TYPE.

Typen von überwachten Ressourcen für benutzerdefinierte Messwerte

Wenn Sie Ihre Daten in eine Zeitachse schreiben, müssen Sie angeben, woher die Daten stammen. Wählen Sie zur Angabe der Quelle der Daten einen Typ von überwachter Ressource aus, der die Herkunft der Daten darstellt. Verwenden Sie diesen Typ dann, um den spezifischen Ursprung zu beschreiben. Die überwachte Ressource gehört nicht zum Messwerttyp. Stattdessen enthält die Zeitachse, in die Sie Daten schreiben, einen Verweis auf den Messwerttyp und einen Verweis auf die überwachte Ressource. Der Messwerttyp beschreibt die Daten, während die überwachte Ressource den Ursprung der Daten beschreibt.

Prüfen Sie die überwachte Ressource, bevor Sie den Messwertdeskriptor erstellen. Der verwendete Typ der überwachten Ressource wirkt sich darauf aus, welche Labels Sie in den Messwertdeskriptor aufnehmen müssen. Beispielsweise enthält die Compute Engine-VM-Ressource Labels für die Projekt-ID, die Instanz-ID und die Instanzzone. Wenn Sie also einen benutzerdefinierten Messwert für eine Compute Engine-VM-Ressource erstellen möchten, enthalten die Ressourcenlabels die Instanz-ID. Daher ist im Messwertdeskriptor kein Label für die Instanz-ID erforderlich. aus.

Jeder Datenpunkt eines Messwerts muss mit dem Objekt einer überwachten Ressource verknüpft sein. Punkte aus verschiedenen überwachten Ressourcenobjekten werden in verschiedenen Zeitachsen gespeichert.

Die folgende Liste enthält die überwachten Ressourcentypen, die Sie mit benutzerdefinierten Messwerten verwenden können:

Häufig werden die überwachten Ressourcenobjekte verwendet, die die physischen Ressourcen repräsentieren, auf denen Ihr Anwendungscode ausgeführt wird. Dieser Ansatz bietet verschiedene Vorteile:

  • Sie erhalten eine bessere Leistung im Vergleich zur Verwendung eines einzelnen Ressourcentyps.
  • Sie vermeiden falsche Dateneinträge, die verursacht werden, wenn mehrere Prozesse in dieselbe Zeitachse schreiben.
  • Sie können die benutzerdefinierten Messwertdaten mit anderen Messwertdaten aus denselben Ressourcen gruppieren.

global und allgemeine Ressourcen

Die Ressourcentypen generic_task und generic_node sind in Situationen nützlich, in denen keiner der spezifischeren Ressourcentypen geeignet ist. Der Typ generic_task eignet sich zum Definieren von aufgabenähnlichen Ressourcen wie Anwendungen. Der Typ generic_node eignet sich zum Definieren knotenähnlicher Ressourcen wie virtuelle Maschinen. Beide generic_*-Typen haben mehrere allgemeine Labels, die Sie zur Definition eindeutiger Ressourcenobjekte verwenden können. Somit lassen sie sich bei Messwertfiltern ganz einfach für Aggregationen und Reduzierungen verwenden.

Im Gegensatz dazu hat der Ressourcentyp global nur die Labels project_id und location. Wenn Sie in einem Projekt viele Messwertquellen haben und dasselbe global-Ressourcenobjekt verwenden, kann es zu Kollisionen und Überschreibungen Ihrer Messwertdaten kommen.

API-Methoden, die benutzerdefinierte Messwerte unterstützen

Die folgende Tabelle zeigt, welche Methoden in der Monitoring API benutzerdefinierte Messwerte und welche integrierten Messwerte unterstützen:

Monitoring API-Methode Verwendung mit
benutzerdefinierten Messwerten
Verwendung mit
integrierten Messwerten
monitoredResourceDescriptors.get Ja Ja
monitoredResourceDescriptors.list Ja Ja
metricDescriptors.get Ja Ja
metricDescriptors.list Ja Ja
timeSeries.list Ja Ja
timeSeries.create Ja
metricDescriptors.create Ja
metricDescriptors.delete Ja

Limits und Latenzen

Angaben zu den Limits für benutzerdefinierte Messwerte und Datenaufbewahrung finden Sie unter Kontingente und Limits.

Wenn Sie Ihre Messwertdaten über die Aufbewahrungsdauer hinaus beibehalten möchten, müssen Sie die Daten manuell an einen anderen Speicherort wie Cloud Storage oder BigQuery kopieren.

Informationen zu Latenzen beim Schreiben von Daten in benutzerdefinierte Messwerte finden Sie unter Latenz von Messwertdaten.

Nächste Schritte