Anwendung für das Anwendungsmonitoring instrumentieren

Sie können Ihre App Hub-Anwendung so instrumentieren, dass Google Cloud Observability den von Ihrer Anwendung generierten Messwerten und Trace-Daten anwendungsspezifische Labels hinzufügt. Für Arbeitslasten, die in der Google Kubernetes Engine ausgeführt werden, können Sie auch einen OpenTelemetry-HTTP-Servermesswert exportieren, den das Anwendungsmonitoring verwendet, um die Traffic-Ebene, die Serverfehlerrate und die Latenz für HTTP-Anfragen zu melden.

Anwendungsspezifische Labels

Anwendungsspezifische Labels sind Labels oder Attribute, die in Log-, Messwert- oder Trace-Daten eingefügt werden. Diese Labels identifizieren den Dienst oder die Arbeitslast, von dem bzw. der die Daten generiert wurden. Sie können anwendungsspezifische Labels wie alle anderen Labels verwenden. Sie können Daten beispielsweise nach der ID einer Anwendung filtern. Von unterstützter Infrastruktur generierte Telemetriedaten enthalten diese Labels automatisch. Mit Instrumentierung können von Ihrer Anwendung geschriebene Messwerte und Traces diese Labels enthalten.

In diesem Abschnitt wird a.b.{x,y} als a.b.x und a.b.y interpretiert.

Messwertdaten aus der Instrumentierung, die Sie Ihren Anwendungen hinzugefügt haben, können die folgenden Messwertlabels enthalten:

  • metric.labels.apphub_application_{container,id,location}
  • metric.labels.apphub_workload_{criticality_type,environment_type,id}

Trace-Spans, die von der Instrumentierung generiert werden, die Sie Ihren Anwendungen hinzugefügt haben, können die folgenden Ressourcenattribute enthalten:

  • gcp.apphub.application.{container,id,location}
  • gcp.apphub.{workload,service}.{criticality_type,environment_type,id}

Informationen zu OpenTelemetry-HTTP-Servermesswerten

Für Arbeitslasten, die in der Google Kubernetes Engine ausgeführt werden, gibt es keine Systemmesswerte, die den Traffic, die Serverfehlerrate oder die Latenz für HTTP-Anfragen melden können. Die Werte für diese Golden Signals können jedoch aus dem Messwert http.server.request.duration abgeleitet werden, der automatisch von der OpenTelemetry-HTTP-Clientbibliothek erfasst wird.

Der googlemanagedprometheus-Exporter konvertiert den OpenTelemetry-Messwert http.server.request.duration in einen Prometheus-Messwert mit den folgenden Eigenschaften:

  • Name: prometheus/http_server_request_duration_seconds/histogram
  • Messwert: prometheus.googleapis.com/http_server_request_duration_seconds/histogram
  • Ressourcentypen: prometheus_target
  • Einheit: s
  • Art: CUMULATIVE
  • Werttyp: DISTRIBUTION

Wenn Ihr Google Cloud -Projekt den Messwert http_server_request_duration_seconds enthält, werden in Ihren Application Monitoring-Dashboards die Traffic-Stufe, die Serverfehlerrate und die Latenz für HTTP-Anfragen angezeigt.

Informationen zum Konfigurieren Ihrer Anwendung für den Export des Messwerts http_server_request_duration_seconds finden Sie im Abschnitt OpenTelemetry in Kubernetes verwenden in diesem Dokument.

Anwendungs-Labels zu Messwertdaten hinzufügen

Google Cloud Observability versucht, die Quelle von Prometheus-Messwerten zu identifizieren, indem die Attribute, die an die an Ihr Projekt gesendeten Prometheus-Messwerte angehängt sind, mit den von der App Hub API zurückgegebenen Daten verglichen werden. Im Rest dieses Abschnitts werden Konfigurationen aufgeführt, mit denen Google Cloud Observability die App Hub-Anwendung identifizieren kann.

OpenTelemetry in Kubernetes verwenden

So hängen Sie mit Google Cloud Observability Anwendungs-Labels an Messwertdaten an, die von den Arbeitslasten Ihrer Anwendung generiert werden, die in Google Kubernetes Engine ausgeführt werden:

  1. Instrumentieren Sie die Anwendung mit OpenTelemetry.

  2. Stellen Sie entweder den von Google entwickelten Collector oder den OpenTelemetry Collector bereit und konfigurieren Sie den Collector so:

    • Messwertdaten mit dem googlemanagedprometheus-Exporter exportieren.
    • Konfigurieren Sie den Prozessor k8sattributes so, dass Metadaten wie namespace aus der Umgebung extrahiert werden.
    • Konfigurieren Sie den transform/collision-Prozessor, um die Attribute project_id, location, cluster und namespace festzulegen.
    • Konfigurieren Sie den Prozessor transform/aco-gke, um die Labels top_level_controller_name und top_level_controller_type zu füllen.

    Ein Beispiel finden Sie unter otlp-k8s-ingest/config/collector.yaml, der Konfigurationsdatei für den von Google erstellten Collector. Weitere Informationen zu diesem Collector finden Sie unter Von Google erstellten OpenTelemetry Collector in GKE bereitstellen.

  3. Registrieren Sie die Arbeitslasten Ihrer Anwendung bei App Hub.

Google Cloud Managed Service for Prometheus in der GKE verwenden

So hängen Sie mit Google Cloud Observability Anwendungs-Labels an Messwertdaten an, die von den Arbeitslasten Ihrer Anwendung generiert werden, die in Google Kubernetes Engine-Clustern ausgeführt werden:

  1. Verwenden Sie Google Cloud Managed Service for Prometheus mit verwalteter Erfassung.

  2. Stellen Sie Ihre Arbeitslasten in einem Google Kubernetes Engine-Cluster bereit, dessen Version mindestens 1.32.1-gke.1439000 ist.

  3. Registrieren Sie die Arbeitslasten Ihrer Anwendung bei App Hub.

Google Cloud Managed Service for Prometheus ermittelt die Werte der Anwendungs-Labels über Service Discovery-Metadaten und fügt dann die top_level_controller_{name,type}-Labels dem targetLabels.metadata hinzu. Während der Messwertaufnahme verwendet Google Cloud Observability die top_level_controller_{name,type}-Labels und die App Hub API, um Ihre App Hub-Anwendung zu identifizieren und Ihren Messwertdaten die entsprechenden Labels hinzuzufügen.

Cloud Run verwenden

So hängen Sie mit Google Cloud Observability Anwendungs-Labels an Messwertdaten an, die von Ihren Cloud Run-Arbeitslasten generiert werden:

  1. Instrumentieren Sie Ihre Anwendung entweder mit OpenTelemetry oder dem Managed Service for Prometheus-Sidecar für Cloud Run. Informationen zu diesen Ansätzen finden Sie in den folgenden Dokumenten:

  2. Registrieren Sie die Arbeitslasten Ihrer Anwendung bei App Hub.

Messwertlabels prüfen

So prüfen Sie, ob Ihre Anwendung Prometheus-Messwerte an Ihr Projekt sendet:

  1. Prüfen Sie, ob Ihre Anwendung Prometheus-Messwerte an Ihr Projekt sendet:
    1. Rufen Sie in der Google Cloud Console das auf der Seite des Metrics Explorer auf:

      Zu Metrics Explorer

      Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

    2. Wählen Sie in der Symbolleiste der Google Cloud Console Ihr Projekt von Google Cloud aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Anwendungsverwaltung konfigurierten Ordners aus.
    3. Maximieren Sie im Element Messwert das Menü Messwert auswählen, geben Sie Prometheus Target 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 Option Prometheus-Ziel aus.
      2. Einen Messwert wählen Sie in den Menüs Aktive Messwertkategorien und Aktive Messwerte aus.
      3. Klicken Sie auf Übernehmen.
    4. Verwenden Sie das Element Filter, um Filter hinzuzufügen, mit denen Zeitreihen aus den Abfrageergebnissen entfernt werden.

    5. Konfigurieren Sie, wie die Daten angezeigt werden.

      Maximieren Sie das Menü Filter, um Labels aufzurufen. Jeder Eintrag im Menü Filter entspricht einem Label.

      Weitere Informationen zum Konfigurieren eines Diagramms finden Sie unter Messwerte bei Verwendung von Metrics Explorer auswählen.

    Wenn keine Prometheus-Messwerte angezeigt werden, prüfen Sie Ihre Konfiguration.

Wenn Ihre Prometheus-Messwerte keine Anwendungs-Labels enthalten, gehen Sie so vor:

  1. Prüfen Sie, ob Sie Ihre Arbeitslast oder Ihren Dienst bei App Hub registriert haben.

  2. Prüfen Sie Ihre Logs auf Fehler.

    Wenn Sie beispielsweise einen OpenTelemetry Collector oder den von Google entwickelten Collector bereitstellen und in der Google Kubernetes Engine ausführen, können Sie Folgendes tun:

    1. Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:

      Zu Arbeitslasten

      Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.

    2. Wählen Sie Ihr Collector-Deployment und dann den Tab Logs aus.
  3. Wenn Sie einen OpenTelemetry Collector oder den von Google erstellten Collector verwenden, prüfen Sie die Konfiguration Ihres Collectors. Ihr Collector muss Folgendes tun:

    • Messwertdaten mit dem googlemanagedprometheus-Exporter exportieren.
    • Konfigurieren Sie den Prozessor k8sattributes so, dass Metadaten wie namespace aus der Umgebung extrahiert werden.
    • Konfigurieren Sie den transform/collision-Prozessor, um die Attribute project_id, location, cluster und namespace festzulegen.
    • Konfigurieren Sie den Prozessor transform/aco-gke, um die Labels top_level_controller_name und top_level_controller_type zu füllen.

    Ein Beispiel finden Sie in der von Google erstellten Collector-Konfigurationsdatei: otlp-k8s-ingest/config/collector.yaml.

Anwendungsattribute zu Trace-Spans hinzufügen

Sie instrumentieren Ihre Anwendung nicht so, dass anwendungsspezifische Attribute an die Spans angehängt werden, die an Ihr Google Cloud -Projekt gesendet werden. Stattdessen verwendet Google Cloud Observability OpenTelemetry-Ressourcenattribute und die App Hub API, um die mit einem Span verknüpfte App Hub-Anwendung zu identifizieren. Anschließend werden die anwendungsspezifischen Attribute hinzugefügt, bevor der Span gespeichert wird.

Damit Google Cloud Observability anwendungsspezifische Ressourcenattribute an Trace-Daten anhängt, die von den Diensten und Arbeitslasten Ihrer Anwendung generiert werden, müssen Sie Folgendes tun:

Weitere Informationen zu diesen Attributen finden Sie unter Semantische Konventionen fürGoogle Cloud App Hub.

Erforderliche Attribute

Dieser Abschnitt gilt für Konfigurationen, bei denen Sie keinen der empfohlenen Collectors verwenden. Sie können beispielsweise einen eigenen Collector schreiben oder Ihre Trace-Daten direkt exportieren.

Attribute, die Ihr Projekt und den Ressourcenstandort identifizieren

Legen Sie die folgenden Attribute fest:

  • cloud.provider: Legen Sie "gcp" fest.
  • cloud.account.id: Auf Ihre Projekt-ID festlegen.
  • cloud.availability_zone oder cloud.region: Legen Sie die Zone oder Region fest, in der sich Ihre Ressourcen befinden. Sie können beide Attribute festlegen.

Mit Ressourcendetektoren können Sie die vorherigen Attribute festlegen:

Attribute für Google Kubernetes Engine-Arbeitslasten

Konfigurieren Sie für eine Google Kubernetes Engine-Arbeitslast Ihren Collector oder Ihre Instrumentierung so, dass Folgendes geschieht:

  • Extrahieren Sie Metadaten wie namespace aus der Umgebung.
  • Extrahieren Sie relevante Metadaten aus dem Prozessor k8sattributes.
  • Legen Sie die Attribute project_id, location, cluster und namespace für Messwerte fest.
  • Legen Sie die Labels top_level_controller_name und top_level_controller_type für Messwerte fest.

Ein Collector-basiertes Beispiel finden Sie unter otlp-k8s-ingest/config/collector.yaml. Dieser Collector verwendet den Prozessor k8sattributesprocessor.

Attribute für VM-Arbeitslasten

Wenn Sie Ihre Anwendung auf einer VM bereitstellen, muss diese VM mit einer verwalteten Instanzgruppe (MIG) verknüpft sein. Außerdem müssen Sie die folgenden Attribute anhängen:

  • gcp.gce.instance_group_manager.name
  • gcp.gce.instance_group_manager.region oder gcp.gce.instance_group_manager.zone