Anwendung für das Anwendungsmonitoring instrumentieren

In diesem Dokument wird beschrieben, wie Sie eine App Hub-Anwendung so konfigurieren, dass die von der Anwendung generierten Messwerte und Tracedaten anwendungsspezifische Labels enthalten. Außerdem wird beschrieben, wie Sie Ihre Anwendung so konfigurieren, dass ein Messwert exportiert wird, der von Application Monitoring verwendet wird, um das Traffic-Niveau, die Serverfehlerrate oder die Latenz für HTTP-Anfragen-Arbeitslasten zu melden, die in Google Kubernetes Engine ausgeführt werden.

Anwendungsspezifische Labels

Anwendungsspezifische Labels beziehen sich auf Labels oder Attribute, die in Log-, Messwert- oder Tracing-Daten eingefügt werden. Mit diesen Labels wird der Dienst oder die Arbeitslast identifiziert, aus der die Daten stammen. Sie können anwendungsspezifische Labels wie alle anderen Labels verwenden. Sie können Daten beispielsweise nach der ID einer Anwendung filtern. Telemetriedaten, die von unterstützter Infrastruktur generiert werden, enthalten diese Labels automatisch. Durch die Instrumentierung können Messwerte und Traces, die von Ihrer Anwendung geschrieben werden, diese Labels enthalten.

In diesem Abschnitt ist a.b.{x,y} als a.b.x und a.b.y zu interpretieren.

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 Instrumentierungen 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}

OpenTelemetry-Messwerte für HTTP-Server

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

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, wird in Ihren OOTB-Dashboards das Traffic-Volumen, die Serverfehlerrate und die Latenz für HTTP-Anfragen angezeigt.

Informationen zum Konfigurieren Ihrer Anwendung zum Exportieren des Messwerts http_server_request_duration_seconds finden Sie in diesem Dokument im Abschnitt OpenTelemetry in Kubernetes verwenden.

Messwertdaten Anwendungs-Labels hinzufügen

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

OpenTelemetry in Kubernetes verwenden

Damit Google Cloud Observability Anwendungslabel an Messwertdaten anhängt, die von den Arbeitslasten Ihrer Anwendung generiert werden, die in Google Kubernetes Engine ausgeführt werden, gehen Sie so vor:

  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 k8sattributes-Prozessor, um Metadaten wie namespace aus der Umgebung zu extrahieren.
    • Konfigurieren Sie den transform/collision-Prozessor, um die Attribute project_id, location, cluster und namespace festzulegen.
    • Konfigurieren Sie den transform/aco-gke-Prozessor, um die Labels top_level_controller_name und top_level_controller_type zu verwenden.

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

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

Google Cloud Managed Service for Prometheus in GKE verwenden

Damit Google Cloud Observability Anwendungslabels an Messwertdaten anhängt, die von den Arbeitslasten Ihrer Anwendung generiert werden, die in Google Kubernetes Engine-Clustern ausgeführt werden, gehen Sie so vor:

  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 Metadaten zur Dienstermittlung und fügt dann die top_level_controller_{name,type}-Labels dem targetLabels.metadata hinzu. Beim Erfassen von Messwerten verwendet Google Cloud Observability die top_level_controller_{name,type}-Labels und die App Hub API, um Ihre App Hub-Anwendung zu identifizieren und den Messwertdaten die entsprechenden Labels hinzuzufügen.

Cloud Run verwenden

Damit Google Cloud Observability Anwendungslabels an Messwertdaten anhängt, die von Ihren Cloud Run-Arbeitslasten generiert werden, gehen Sie so vor:

  1. Instrumentieren Sie Ihre Anwendung entweder mit OpenTelemetry oder mit 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 überprü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 die Seite  Metrics Explorer auf:

      Zum 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 Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten 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 Filter entspricht einem Label.

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

    Wenn Sie keine Prometheus-Messwerte sehen, überprüfen Sie Ihre Konfiguration.

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

  1. Prüfen Sie, ob Sie Ihre Arbeitslast oder Ihren Dienst in 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 Google Kubernetes Engine verwenden, 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 entwickelten Collector verwenden, prüfen Sie die Konfiguration Ihres Collectors. Ihr Collector muss Folgendes tun:

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

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

Anwendungsattribute zu Trace-Spans hinzufügen

Damit Cloud Trace an Tracedaten, die von den Diensten und Arbeitslasten der Anwendung generiert werden, anwendungsspezifische Ressourcenattribute anhängt, gehen Sie so vor:

  1. Registrieren Sie Ihre Dienste und Arbeitslasten in App Hub.
  2. Instrumentieren Sie Ihre Anwendung mit OpenTelemetry und senden Sie die von Ihrer Anwendung erfassten Trace-Daten über den Google Cloud OTLP-Endpunkt an Ihr Projekt.
  3. Konfigurieren Sie den OpenTelemetry Collector oder den von Google entwickelten Collector so, dass die exportierten Spandaten die OpenTelemetry-Ressourcenattribute enthalten, die die von Ihrer Anwendung verwendeten unterstützten Google Cloud Ressourcen identifizieren. Die Ressourcenattribute müssen Folgendes enthalten:

    • cloud.account.id
    • Eines der folgenden Elemente: cloud.{availability_zone,region}
    • Ressourcenspezifische Attribute. Für eine Kubernetes-Arbeitslast müssen für Spans beispielsweise k8s.cluster.name, k8s.namespace und der Typ des Kubernetes-Deployments festgelegt sein.

    Mit Prozessoren können Sie dafür sorgen, dass der Collector ressourcenspezifische Attribute an Ihre Spans anhängt. Weitere Informationen finden Sie unter resourcedetectionprocessor und k8sattributesprocessor.

    Google Cloud Observability verwendet die oben genannten Ressourcenattribute und die App Hub API, um Ihre App Hub-Anwendung zu identifizieren. Anwendungsspezifische Attribute werden den Tracedaten hinzugefügt, wenn eine Anwendung identifiziert wird.

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