Benutzerdefinierte Messwerte mit OpenCensus erstellen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

OpenCensus ist ein kostenloses Open-Source-Projekt, dessen Bibliotheken

  • Anbieterneutrale Unterstützung für die Erfassung von Messwert- und Trace-Daten in mehreren Sprachen
  • Kann die erfassten Daten mithilfe von Exportern in verschiedene Back-End-Anwendungen exportieren, einschließlich Cloud Monitoring.

Obwohl Cloud Monitoring eine API zum Definieren und Erfassen benutzerdefinierter Messwerte bereitstellt, handelt es sich um eine untergeordnete, proprietäre API. OpenCensus bietet eine API im Stil der Sprachcommunity sowie einen Exporter, der Ihre Messwertdaten über die Monitoring API an Cloud Monitoring sendet.

OpenCensus bietet außerdem eine gute Unterstützung für Anwendungs-Tracing. Einen allgemeinen Überblick finden Sie unter OpenCensus Tracing. Cloud Trace empfiehlt OpenCensus für die Trace-Instrumentierung. Wenn Sie sowohl Messwert- als auch Trace-Daten aus Ihren Diensten erfassen möchten, können Sie eine einzige Verteilung von Bibliotheken verwenden. Weitere Informationen zum Verwenden von OpenCensus mit Cloud Trace finden Sie unter Clientbibliotheken für Trace.

Hinweis

Um Cloud Monitoring verwenden zu können, muss ein Cloud-Projekt mit aktivierter Abrechnungsfunktion vorhanden sein. Gehen Sie bei Bedarf so vor:

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  3. Achten Sie darauf, dass die Monitoring API aktiviert ist. Weitere Informationen finden Sie unter Monitoring-API aktivieren.
  4. Anwendungen, die nicht in Google Cloud ausgeführt werden, müssen von Ihrem Cloud-Projekt authentifiziert werden. In der Regel konfigurieren Sie die Authentifizierung, indem Sie ein Dienstkonto für Ihr Projekt erstellen und eine Umgebungsvariable konfigurieren.

    Erstellen Sie für Anwendungen, die Sie in einer Amazon Elastic Compute Cloud-Instanz (Amazon EC2) ausführen, das Dienstkonto für das AWS-Connector-Projekt.

    Informationen zum Erstellen eines Dienstkontos finden Sie unter Erste Schritte bei der Authentifizierung.

OpenCensus installieren

Wenn Sie von OpenCensus erfasste Messwerte in Ihrem Google Cloud-Projekt verwenden möchten, müssen Sie die OpenCensus-Messwertbibliotheken und den Stackdriver-Exporter für Ihre Anwendung verfügbar machen. Der Stackdriver-Exporter exportiert die von OpenCensus erfassten Messwerte in Ihr Google Cloud-Projekt. Anschließend können Sie diese Messwerte mit Cloud Monitoring grafisch darstellen lassen oder überwachen.

Go

Für die Verwendung von OpenCensus ist Go in der Version 1.11 oder höher erforderlich. Die Abhängigkeiten werden automatisch für Sie gehandhabt.

Java

Füge für Maven das Element dependencies in deiner pom.xml-Datei hinzu:
<dependency>
  <groupId>io.opencensus</groupId>
  <artifactId>opencensus-api</artifactId>
  <version>${opencensus.version}</version>
</dependency>
<dependency>
  <groupId>io.opencensus</groupId>
  <artifactId>opencensus-impl</artifactId>
  <version>${opencensus.version}</version>
</dependency>
<dependency>
  <groupId>io.opencensus</groupId>
  <artifactId>opencensus-exporter-stats-stackdriver</artifactId>
  <version>${opencensus.version}</version>
</dependency>
<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-core</artifactId>
</dependency>

Node.js

  1. Bevor Sie den OpenCensus-Kern und die Exporter-Bibliotheken installieren, müssen Sie Ihre Umgebung auf die Node.js-Entwicklung vorbereitet haben.
  2. Am einfachsten lässt sich OpenCensus mit npm installieren:
    npm install @opencensus/core
    npm install @opencensus/exporter-stackdriver
  3. Platzieren Sie die unten aufgeführten require-Anweisungen am Anfang des Hauptskripts oder des Einstiegspunkts Ihrer Anwendung vor jedem anderen Code:
const {globalStats, MeasureUnit, AggregationType} = require('@opencensus/core');
const {StackdriverStatsExporter} = require('@opencensus/exporter-stackdriver');

Python

Installieren Sie die OpenCensus-Core-Bibliothek und die Stackdriver-Exporter-Bibliothek mithilfe des folgenden Befehls:

pip install -r opencensus/requirements.txt

Die Datei requirements.txt befindet sich im GitHub-Repository für diese Beispiele, python-docs-samples.

Benutzerdefinierte Messwerte mit OpenCensus schreiben

Das Instrumentieren Ihres Codes zur Verwendung von OpenCensus für Messwerte umfasst drei Schritte:

  1. Importieren Sie die OpenCensus-Statistik und die OpenCensus Stackdriver-Exporter-Pakete.
  2. Initialisieren Sie den Stackdriver-Exporter.
  3. Verwenden Sie die OpenCensus API, um den Code zu instrumentieren.

Das folgende Beispiel ist ein Minimalprogramm, das Messwertdaten mit OpenCensus schreibt. Das Programm führt eine Schleife aus und erfasst Latenzmesswerte. Wenn die Schleife abgeschlossen ist, werden die Statistiken nach Cloud Monitoring exportiert und beendet:

Go


// metrics_quickstart is an example of exporting a custom metric from
// OpenCensus to Stackdriver.
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"contrib.go.opencensus.io/exporter/stackdriver"
	"go.opencensus.io/stats"
	"go.opencensus.io/stats/view"
	"golang.org/x/exp/rand"
)

var (
	// The task latency in milliseconds.
	latencyMs = stats.Float64("task_latency", "The task latency in milliseconds", "ms")
)

func main() {
	ctx := context.Background()

	// Register the view. It is imperative that this step exists,
	// otherwise recorded metrics will be dropped and never exported.
	v := &view.View{
		Name:        "task_latency_distribution",
		Measure:     latencyMs,
		Description: "The distribution of the task latencies",

		// Latency in buckets:
		// [>=0ms, >=100ms, >=200ms, >=400ms, >=1s, >=2s, >=4s]
		Aggregation: view.Distribution(0, 100, 200, 400, 1000, 2000, 4000),
	}
	if err := view.Register(v); err != nil {
		log.Fatalf("Failed to register the view: %v", err)
	}

	// Enable OpenCensus exporters to export metrics
	// to Stackdriver Monitoring.
	// Exporters use Application Default Credentials to authenticate.
	// See https://developers.google.com/identity/protocols/application-default-credentials
	// for more details.
	exporter, err := stackdriver.NewExporter(stackdriver.Options{})
	if err != nil {
		log.Fatal(err)
	}
	// Flush must be called before main() exits to ensure metrics are recorded.
	defer exporter.Flush()

	if err := exporter.StartMetricsExporter(); err != nil {
		log.Fatalf("Error starting metric exporter: %v", err)
	}
	defer exporter.StopMetricsExporter()

	// Record 100 fake latency values between 0 and 5 seconds.
	for i := 0; i < 100; i++ {
		ms := float64(5*time.Second/time.Millisecond) * rand.Float64()
		fmt.Printf("Latency %d: %f\n", i, ms)
		stats.Record(ctx, latencyMs.M(ms))
		time.Sleep(1 * time.Second)
	}

	fmt.Println("Done recording metrics")
}

Java


import com.google.common.collect.Lists;
import io.opencensus.exporter.stats.stackdriver.StackdriverStatsExporter;
import io.opencensus.stats.Aggregation;
import io.opencensus.stats.BucketBoundaries;
import io.opencensus.stats.Measure.MeasureLong;
import io.opencensus.stats.Stats;
import io.opencensus.stats.StatsRecorder;
import io.opencensus.stats.View;
import io.opencensus.stats.View.Name;
import io.opencensus.stats.ViewManager;
import java.io.IOException;
import java.util.Collections;
import java.util.Random;
import java.util.concurrent.TimeUnit;

public class Quickstart {
  private static final int EXPORT_INTERVAL = 70;
  private static final MeasureLong LATENCY_MS =
      MeasureLong.create("task_latency", "The task latency in milliseconds", "ms");
  // Latency in buckets:
  // [>=0ms, >=100ms, >=200ms, >=400ms, >=1s, >=2s, >=4s]
  private static final BucketBoundaries LATENCY_BOUNDARIES =
      BucketBoundaries.create(Lists.newArrayList(0d, 100d, 200d, 400d, 1000d, 2000d, 4000d));
  private static final StatsRecorder STATS_RECORDER = Stats.getStatsRecorder();

  public static void main(String[] args) throws IOException, InterruptedException {
    // Register the view. It is imperative that this step exists,
    // otherwise recorded metrics will be dropped and never exported.
    View view =
        View.create(
            Name.create("task_latency_distribution"),
            "The distribution of the task latencies.",
            LATENCY_MS,
            Aggregation.Distribution.create(LATENCY_BOUNDARIES),
            Collections.emptyList());

    ViewManager viewManager = Stats.getViewManager();
    viewManager.registerView(view);

    // Enable OpenCensus exporters to export metrics to Stackdriver Monitoring.
    // Exporters use Application Default Credentials to authenticate.
    // See https://developers.google.com/identity/protocols/application-default-credentials
    // for more details.
    StackdriverStatsExporter.createAndRegister();

    // Record 100 fake latency values between 0 and 5 seconds.
    Random rand = new Random();
    for (int i = 0; i < 100; i++) {
      long ms = (long) (TimeUnit.MILLISECONDS.convert(5, TimeUnit.SECONDS) * rand.nextDouble());
      System.out.println(String.format("Latency %d: %d", i, ms));
      STATS_RECORDER.newMeasureMap().put(LATENCY_MS, ms).record();
    }

    // The default export interval is 60 seconds. The thread with the StackdriverStatsExporter must
    // live for at least the interval past any metrics that must be collected, or some risk being
    // lost if they are recorded after the last export.

    System.out.println(
        String.format(
            "Sleeping %d seconds before shutdown to ensure all records are flushed.",
            EXPORT_INTERVAL));
    Thread.sleep(TimeUnit.MILLISECONDS.convert(EXPORT_INTERVAL, TimeUnit.SECONDS));
  }
}

Node.js

'use strict';

const {globalStats, MeasureUnit, AggregationType} = require('@opencensus/core');
const {StackdriverStatsExporter} = require('@opencensus/exporter-stackdriver');

const EXPORT_INTERVAL = process.env.EXPORT_INTERVAL || 60;
const LATENCY_MS = globalStats.createMeasureInt64(
  'task_latency',
  MeasureUnit.MS,
  'The task latency in milliseconds'
);

// Register the view. It is imperative that this step exists,
// otherwise recorded metrics will be dropped and never exported.
const view = globalStats.createView(
  'task_latency_distribution',
  LATENCY_MS,
  AggregationType.DISTRIBUTION,
  [],
  'The distribution of the task latencies.',
  // Latency in buckets:
  // [>=0ms, >=100ms, >=200ms, >=400ms, >=1s, >=2s, >=4s]
  [0, 100, 200, 400, 1000, 2000, 4000]
);

// Then finally register the views
globalStats.registerView(view);

// Enable OpenCensus exporters to export metrics to Stackdriver Monitoring.
// Exporters use Application Default Credentials (ADCs) to authenticate.
// See https://developers.google.com/identity/protocols/application-default-credentials
// for more details.
// Expects ADCs to be provided through the environment as ${GOOGLE_APPLICATION_CREDENTIALS}
// A Stackdriver workspace is required and provided through the environment as ${GOOGLE_PROJECT_ID}
const projectId = process.env.GOOGLE_PROJECT_ID;

// GOOGLE_APPLICATION_CREDENTIALS are expected by a dependency of this code
// Not this code itself. Checking for existence here but not retaining (as not needed)
if (!projectId || !process.env.GOOGLE_APPLICATION_CREDENTIALS) {
  throw Error('Unable to proceed without a Project ID');
}

// The minimum reporting period for Stackdriver is 1 minute.
const exporter = new StackdriverStatsExporter({
  projectId: projectId,
  period: EXPORT_INTERVAL * 1000,
});

// Pass the created exporter to Stats
globalStats.registerExporter(exporter);

// Record 100 fake latency values between 0 and 5 seconds.
for (let i = 0; i < 100; i++) {
  const ms = Math.floor(Math.random() * 5);
  console.log(`Latency ${i}: ${ms}`);
  globalStats.record([
    {
      measure: LATENCY_MS,
      value: ms,
    },
  ]);
}

/**
 * The default export interval is 60 seconds. The thread with the
 * StackdriverStatsExporter must live for at least the interval past any
 * metrics that must be collected, or some risk being lost if they are recorded
 * after the last export.
 */
setTimeout(() => {
  console.log('Done recording metrics.');
  globalStats.unregisterExporter(exporter);
}, EXPORT_INTERVAL * 1000);

Python


from random import random
import time

from opencensus.ext.stackdriver import stats_exporter
from opencensus.stats import aggregation
from opencensus.stats import measure
from opencensus.stats import stats
from opencensus.stats import view

# A measure that represents task latency in ms.
LATENCY_MS = measure.MeasureFloat(
    "task_latency",
    "The task latency in milliseconds",
    "ms")

# A view of the task latency measure that aggregates measurements according to
# a histogram with predefined bucket boundaries. This aggregate is periodically
# exported to Stackdriver Monitoring.
LATENCY_VIEW = view.View(
    "task_latency_distribution",
    "The distribution of the task latencies",
    [],
    LATENCY_MS,
    # Latency in buckets: [>=0ms, >=100ms, >=200ms, >=400ms, >=1s, >=2s, >=4s]
    aggregation.DistributionAggregation(
        [100.0, 200.0, 400.0, 1000.0, 2000.0, 4000.0]))

def main():
    # Register the view. Measurements are only aggregated and exported if
    # they're associated with a registered view.
    stats.stats.view_manager.register_view(LATENCY_VIEW)

    # Create the Stackdriver stats exporter and start exporting metrics in the
    # background, once every 60 seconds by default.
    exporter = stats_exporter.new_stats_exporter()
    print('Exporting stats to project "{}"'
          .format(exporter.options.project_id))

    # Register exporter to the view manager.
    stats.stats.view_manager.register_exporter(exporter)

    # Record 100 fake latency values between 0 and 5 seconds.
    for num in range(100):
        ms = random() * 5 * 1000

        mmap = stats.stats.stats_recorder.new_measurement_map()
        mmap.measure_float_put(LATENCY_MS, ms)
        mmap.record()

        print("Fake latency recorded ({}: {})".format(num, ms))

    # Keep the thread alive long enough for the exporter to export at least
    # once.
    time.sleep(65)

if __name__ == '__main__':
    main()
Wenn diese Messwertdaten nach Cloud Monitoring exportiert werden, können Sie sie wie alle anderen Daten verwenden.

Das Programm erstellt eine OpenCensus-Ansicht mit dem Namen task_latency_distribution. Dieser String wird beim Export in Cloud Monitoring Teil des Messwerts. Unter Messwertdeskriptoren abrufen erfahren Sie, wie die OpenCensus-Ansicht als Cloud Monitoring-Messwertdeskriptor implementiert wird. Sie können daher den Ansichtsnamen als Suchstring verwenden, wenn Sie einen Messwert für ein Diagramm auswählen.

Wenn Sie das Beispielprogramm ausgeführt haben, können Sie sich Ihre Daten mit Metrics Explorer ansehen:
  1. Rufen Sie in der Google Cloud Console unter „Monitoring“ die Seite „Metrics Explorer” auf.
  2. Zum Metrics Explorer

  3. Wählen Sie in der Symbolleiste den Tab Explorer aus.
  4. Wählen Sie den Tab Konfiguration aus.
  5. Maximieren Sie das Menü Messwert auswählen, geben Sie OpenCensus/task_latency_distribution in die Filterleiste ein und wählen Sie dann über die Untermenüs einen bestimmten Ressourcentyp und Messwert aus:
    1. Wählen Sie im Menü Aktive Ressourcen die überwachte Ressource aus. Wenn Sie das Programm in einer lokalen Umgebung ausführen, wählen Sie Global aus.
    2. Wählen Sie im Menü Aktive Messwertkategorien die Option Benutzerdefiniert aus.
    3. Wählen Sie im Menü Aktive Messwerte die Option Aufgabenlatenzverteilung aus.
    4. Klicken Sie auf Anwenden.
  6. Optional: Konfigurieren Sie die Anzeige der Daten, fügen Sie Filter hinzu und verwenden Sie die Menüs Gruppieren nach, Aggregator und Diagrammtyp. Maximieren Sie für dieses Diagramm das Menü Liniendiagramm und wählen Sie dann Heatmap-Diagramm aus. Weitere Informationen finden Sie unter Messwerte bei Verwendung von Metrics Explorer auswählen.
  7. Optional: Ändern Sie die Diagrammeinstellungen:
    • Legen Sie für Kontingente und andere Messwerte, die eine Stichprobe pro Tag melden, den Zeitraum auf mindestens eine Woche fest und geben Sie als Darstellungstyp Übereinander angeordnetes Balkendiagramm an.
    • Stellen Sie für Verteilungsmesswerte die Darstellung auf Heatmap-Diagramm ein.

Der folgende Screenshot zeigt die Zeitachse, die nach der Ausführung des Programms in einer lokalen Umgebung erfasst wird:

Messwerte aus OpenCensus in Cloud Monitoring.

Jede Säule in der Heatmap repräsentiert einen einzelnen Programmdurchlauf. Die farbigen Komponenten jeder Säule stehen für Buckets in der Latenzverteilung.

OpenCensus-Messwerte in Cloud Monitoring lesen

Sie verwenden benutzerdefinierte Messwerte, einschließlich jener von OpenCensus, wie integrierte Messwerte. Sie können sie grafisch darstellen, für sie Benachrichtigungen festlegen, lesen und anderweitig überwachen.

In diesem Abschnitt wird erläutert, wie Sie mit APIs Explorer Messwertdaten lesen. Informationen zum Lesen von Messwertdaten mithilfe der Cloud Monitoring API oder von Clientbibliotheken finden Sie in den folgenden Dokumenten:

  • Unter Messwerte durchsuchen wird erläutert, wie Sie Ihre benutzerdefinierten und integrierten Messwerte auflisten und untersuchen.
  • Unter Messwerte lesen wird erläutert, wie Sie mithilfe der Monitoring API Zeitachsendaten aus benutzerdefinierten und integrierten Messwerten abrufen.

Der im vorherigen Abschnitt gezeigte Screenshot stammt beispielsweise aus dem Metrics Explorer. Wenn Sie Diagrammtools verwenden, empfehlen wir, den Namen der OpenCensus-Ansicht zu verwenden, um die Liste der Messwerte zu filtern. Weitere Informationen finden Sie unter Messwerte bei Verwendung von Metrics Explorer auswählen.

Messwertdeskriptoren abrufen

Wenn Sie die Messwertdaten direkt mit der Monitoring API abrufen möchten, müssen Sie die Cloud Monitoring-Namen kennen, in die die OpenCensus-Messwerte exportiert wurden. Sie können diese Namen ermitteln, indem Sie die Messwertdeskriptoren abrufen, die der Exporter erstellt, und dann das Feld type prüfen. Weitere Informationen zu Messwertdeskriptoren finden Sie unter MetricDescriptor.

So rufen Sie die Messwertdeskriptoren auf, die für die exportierten Messwerte erstellt wurden:

  1. Rufen Sie die Referenzseite metricDescriptors.list auf.
  2. Füllen Sie auf der Referenzseite im Widget API testen die folgenden Felder aus:

    1. Geben Sie den Namen Ihres Projekts in das Feld name ein. Verwenden Sie die folgende Namensstruktur projects/PROJECT_ID. In diesem Dokument wird ein Projekt mit der ID a-gcp-project verwendet.

    2. Geben Sie einen Filter in das Feld filter ein. Es gibt viele Messwertdeskriptoren in einem Projekt. Durch das Filtern können Sie irrelevante Deskriptoren entfernen.

      Da der Name der OpenCensus-Ansicht beispielsweise Teil des Messwertnamens wird, können Sie einen Filter wie diesen hinzufügen:

      metric.type=has_substring("task_latency_distribution")

      Der Schlüssel metric.type ist ein Feld in einem Typ, der in eine Zeitachse eingebettet ist. Weitere Informationen finden Sie unter TimeSeries.

    3. Klicken Sie auf Execute.

Hier sehen Sie den zurückgegebenen Messwertdeskriptor:

    {
      "metricDescriptors": [
        {
          "name": "projects/a-gcp-project/metricDescriptors/custom.googleapis.com/opencensus/task_latency_distribution",
          "labels": [
            {
              "key": "opencensus_task",
              "description": "Opencensus task identifier"
            }
          ],
          "metricKind": "CUMULATIVE",
          "valueType": "DISTRIBUTION",
          "unit": "ms",
          "description": "The distribution of the task latencies",
          "displayName": "OpenCensus/task_latency_distribution",
          "type": "custom.googleapis.com/opencensus/task_latency_distribution"
        }
      ]
    }

Diese Zeile im Messwertdeskriptor gibt den Namen des Messwerttyps in Cloud Monitoring an:

    "type": "custom.googleapis.com/opencensus/task_latency_distribution"

Sie haben jetzt die Informationen, die Sie benötigen, um die zum Messwerttyp gehörenden Daten manuell abzurufen. Der Wert des Felds type wird auch in der Google Cloud Console angezeigt, wenn Sie den Messwert grafisch darstellen.

Messwertdaten abrufen

So rufen Sie Zeitreihendaten manuell aus einem Messwerttyp ab:

  1. Rufen Sie die Referenzseite timeSeries.list auf.
  2. Füllen Sie auf der Referenzseite im Widget API testen die folgenden Felder aus:

    1. Geben Sie den Namen Ihres Projekts in das Feld name ein. Verwenden Sie die folgende Namensstruktur projects/PROJECT_ID.
    2. Geben Sie im Feld filter den folgenden Wert ein:

      metric.type="custom.googleapis.com/opencensus/task_latency_distribution"

    3. Geben Sie Werte für die Felder interval.startTime und interval.endTime ein. Diese Werte müssen als Zeitstempel eingegeben werden, z. B. 2018-10-11T15:48:38-04:00. Achten Sie darauf, dass der Wert startTime vor dem Wert endTime liegt.

    4. Klicken Sie auf die Schaltfläche Ausführen.

Hier sehen Sie das Ergebnis eines solchen Abrufs:

    {
      "timeSeries": [
        {
          "metric": {
            "labels": {
              "opencensus_task": "java-3424@docbuild"
            },
            "type": "custom.googleapis.com/opencensus/task_latency_distribution"
          },
          "resource": {
            "type": "gce_instance",
            "labels": {
              "instance_id": "2455918024984027105",
              "zone": "us-east1-b",
              "project_id": "a-gcp-project"
            }
          },
          "metricKind": "CUMULATIVE",
          "valueType": "DISTRIBUTION",
          "points": [
            {
              "interval": {
                "startTime": "2019-04-04T17:49:34.163Z",
                "endTime": "2019-04-04T17:50:42.917Z"
              },
              "value": {
                "distributionValue": {
                  "count": "100",
                  "mean": 2610.11,
                  "sumOfSquaredDeviation": 206029821.78999996,
                  "bucketOptions": {
                    "explicitBuckets": {
                      "bounds": [
                        0,
                        100,
                        200,
                        400,
                        1000,
                        2000,
                        4000
                      ]
                    }
                  },
                  "bucketCounts": [
                    "0",
                    "0",
                    "1",
                    "6",
                    "13",
                    "15",
                    "44",
                    "21"
                  ]
                }
              }
            }
          ]
        },
        [ ... data from additional program runs deleted ...]
      ]
    }

Die zurückgegebenen Messwertdaten umfassen Folgendes:

  • Informationen zu der überwachten Ressource, aus der die Daten erfasst wurden OpenCensus erkennt automatisch überwachte gce_instance-, k8s_container- und aws_ec2_instance-Ressourcen. Diese Daten stammen aus einem Programm, das auf einer Compute Engine-Instanz ausgeführt wurde. Weitere Informationen zur Verwendung anderer überwachter Ressourcen finden Sie unter Set monitored resource for exporter (Überwachte Ressource für Exporter festlegen).
  • Die Beschreibung der Art des Messwerts und des Typs der Werte.
  • Die tatsächlichen Datenpunkte, die innerhalb des angeforderten Zeitintervalls erfasst wurden.

Darstellung von OpenCensus-Messwerten durch Monitoring

Die direkte Verwendung der Cloud Monitoring API für benutzerdefinierte Messwerte wird unterstützt. Ihre Verwendung wird unter Benutzerdefinierte Messwerte mit der API erstellen beschrieben. Der OpenCensus-Exporter für Cloud Monitoring verwendet diese API. In diesem Abschnitt erfahren Sie, wie Cloud Monitoring die von OpenCensus geschriebenen Messwerte darstellt.

Die von der OpenCensus API verwendeten Konstrukte unterscheiden sich von denen, die von Cloud Monitoring verwendet werden, ebenso wie die Terminologie. Wenn Cloud Monitoring auf "Messwerte" verweist, bezieht sich OpenCensus teilweise auf "Statistiken". Die Komponente von OpenCensus, die Messwertdaten an Cloud Monitoring sendet, wird beispielsweise als "stats exporter for Stackdriver" ("Exporteur von Statistiken für Stackdriver") bezeichnet.

Eine Übersicht über das OpenCensus-Modell für Messwerte finden Sie unter OpenCensus-Messwerte.

Die Datenmodelle für OpenCensus-Werte und Cloud Monitoring-Messwerte entsprechen einander nicht genau. Viele Konzepte existieren in beiden, aber sie sind nicht direkt austauschbar.

  • Eine OpenCensus-Ansicht entspricht dem MetricDescriptor in der Monitoring API. Eine Ansicht beschreibt, wie einzelne Messwerte erfasst und zusammengefasst werden. Tags sind in allen aufgezeichneten Messungen enthalten.

  • Ein OpenCensus-Tag ("tag") ist ein Schlüssel/Wert-Paar. Ein OpenCensus-Tag entspricht im Allgemeinen dem LabelDescriptor in der Monitoring API. Mit Tags können Sie Kontextinformationen erfassen, die Sie zum Filtern und Gruppieren von Messwerten verwenden können.

  • Eine OpenCensus-Kennzahl ("measure") beschreibt die aufzuzeichnenden Messwertdaten. Eine OpenCensus-Zusammenfassung ("aggregation") ist eine Funktion, die auf Daten angewendet wird, um sie zu aggregieren. Diese Funktionen werden beim Exportieren verwendet, um MetricKind, ValueType und die im Cloud Monitoring-Messwertdeskriptor gemeldete Einheit zu ermitteln.

  • Eine OpenCensus-Messung ist ein erfasster Datenpunkt. Messwerte müssen in Ansichten zusammengefasst werden. Andernfalls werden die einzelnen Messwerte gelöscht. Eine OpenCensus-Messung ist analog zu einer Point in der Monitoring API. Wenn Messwerte in Ansichten zusammengefasst werden, werden die aggregierten Daten als Ansichtsdaten gespeichert, analog zu einer TimeSeries in der Monitoring API.

Nächste Schritte