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:
Instrumentieren Sie die Anwendung mit OpenTelemetry.
- Allgemeine Informationen finden Sie unter Instrumentierung und Beobachtbarkeit.
- Links zu Go-, Java-, Node.js- und Python-Beispielen sowie Informationen zu diesen Beispielen finden Sie unter Übersicht über Instrumentierungsbeispiele.
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 wienamespace
aus der Umgebung zu extrahieren. - Konfigurieren Sie den
transform/collision
-Prozessor, um die Attributeproject_id
,location
,cluster
undnamespace
festzulegen. - Konfigurieren Sie den
transform/aco-gke
-Prozessor, um die Labelstop_level_controller_name
undtop_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.- Messwertdaten mit dem
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:
Verwenden Sie Google Cloud Managed Service for Prometheus mit verwalteter Erfassung.
Stellen Sie Ihre Arbeitslasten in einem Google Kubernetes Engine-Cluster bereit, dessen Version mindestens
1.32.1-gke.1439000
ist.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:
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:
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:
-
Prüfen Sie, ob Ihre Anwendung Prometheus-Messwerte an Ihr Projekt sendet:
-
Rufen Sie in der Google Cloud Console die Seite leaderboard Metrics Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- 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.
- 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:- Wählen Sie im Menü Aktive Ressourcen die Option Prometheus-Ziel aus.
- Einen Messwert wählen Sie in den Menüs Aktive Messwertkategorien und Aktive Messwerte aus.
- Klicken Sie auf Übernehmen.
Verwenden Sie das Element Filter, um Filter hinzuzufügen, mit denen Zeitreihen aus den Abfrageergebnissen entfernt werden.
- 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:
Prüfen Sie, ob Sie Ihre Arbeitslast oder Ihren Dienst in App Hub registriert haben.
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:
-
Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.
- Wählen Sie Ihr Collector-Deployment und dann den Tab Logs aus.
-
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 wienamespace
aus der Umgebung zu extrahieren. - Konfigurieren Sie den
transform/collision
-Prozessor, um die Attributeproject_id
,location
,cluster
undnamespace
festzulegen. - Konfigurieren Sie den
transform/aco-gke
-Prozessor, um die Labelstop_level_controller_name
undtop_level_controller_type
zu verwenden.
Ein Beispiel finden Sie in der von Google erstellten Collector-Konfigurationsdatei:
otlp-k8s-ingest/config/collector.yaml
.- Messwertdaten mit dem
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:
- Registrieren Sie Ihre Dienste und Arbeitslasten in App Hub.
- 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.
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
undk8sattributesprocessor
.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.