Auf dieser Seite wird beschrieben, wie Sie Messwerte aus Arbeitslasten in Google Distributed Cloud-Umgebungen (GDC) ohne Internetverbindung erfassen, um die Überwachung und Datenbeobachtbarkeit zu ermöglichen.
Sie können Messwerte, die von Ihren Komponenten im Laufe der Zeit generiert werden, erfassen und abrufen. Die Monitoring-Plattform bietet eine benutzerdefinierte API zum Erfassen von Messwerten aus laufenden Arbeitslasten in Ihrem Distributed Cloud-Projektnamespace. Wenn Sie Messwerte erfassen möchten, stellen Sie eine benutzerdefinierte MonitoringTarget
-Ressource in Ihrem Projekt-Namespace auf dem Management API-Server bereit. Nach der Bereitstellung dieser Ressource beginnt die Überwachungsplattform mit der Datenerhebung.
Die benutzerdefinierte Ressource MonitoringTarget
weist die Monitoring-Pipeline an, bestimmte Pods in Ihrem Projekt zu erfassen. Diese Pods müssen einen HTTP-Endpunkt bereitstellen, der Messwerte in einem Prometheus-Darstellungsformat wie OpenMetrics liefert.
Die erfassten Messwerte werden dann in der Grafana-Instanz Ihres Projekts angezeigt und geben Aufschluss über den Betriebsstatus Ihrer Anwendung.
Um die benutzerdefinierte Ressource MonitoringTarget
zu konfigurieren, müssen Sie die Pods in Ihrem Projekt-Namespace für die Erfassung von Messwerten angeben. Sie können verschiedene Einstellungen anpassen, z. B. die Häufigkeit des Scrapings, den Messwertendpunkt der Pods, Labels und Anmerkungen.
Hinweise
Bitten Sie Ihren Organisations-IAM-Administrator oder Projekt-IAM-Administrator, Ihnen eine der zugehörigen MonitoringTarget
-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von benutzerdefinierten MonitoringTarget
-Ressourcen benötigen.
Je nach Zugriffsebene und erforderlichen Berechtigungen können Sie für diese Ressource in einer Organisation oder einem Projekt die Rollen „Ersteller“, „Bearbeiter“ oder „Betrachter“ erhalten. Weitere Informationen finden Sie unter IAM-Berechtigungen vorbereiten.
Benutzerdefinierte MonitoringTarget
-Ressource konfigurieren
Die benutzerdefinierte Ressource MonitoringTarget
gibt der Monitoring-Plattform an, wo Messwerte erfasst werden sollen. Sie können die Pods angeben, für die Sie Messwerte erfassen, den Messwerte-Endpunkt dieser Pods, die Scraping-Häufigkeit und alle zusätzlichen Einstellungen.
Diese Ressource definiert die folgenden Konfigurationen:
- Ziele: Die Pods und ihre Endpunkte in Ihrem Projekt, die Messwerte bereitstellen.
- Scrape-Intervall: Wie oft Messwerte von den ausgewählten Endpunkten abgerufen werden sollen.
- Labelanpassungen: Optionale Regeln mit Labeländerungen für Messwerte.
Wählen Sie eine der folgenden Methoden zum Angeben von Messwert-Endpunkten in der benutzerdefinierten Ressource MonitoringTarget
aus:
- Statische Endpunkte: Sie deklarieren den Endpunkt (Port, Pfad, Schema) explizit in der
MonitoringTarget
-Konfiguration. Annotationen: Die Informationen zum Pod-Messwert-Endpunkt werden aus Annotationen in der Datei
Deployment
des Containers abgerufen. Diese Methode bietet mehr Flexibilität, wenn jeder Pod unterschiedliche Endpunkte hat.
Statische Endpunkte
So machen Sie Messwerte aus den ausgewählten Pods über einen statisch definierten Endpunkt verfügbar:
Legen Sie das Distributed Cloud-Projekt fest, aus dem Sie Messwerte für die Überwachung erfassen möchten.
Deklarieren Sie in der Spezifikation Ihres Pods den Port, über den Messwerte bereitgestellt werden, im Feld
containerPort
. Im folgenden Beispiel wird gezeigt, wie der Port2112
in der Pod-Spezifikation deklariert wird:# ... spec: template: spec: containers: - name: your-container-name ports: - containerPort: 2112 # ...
Geben Sie in der
MonitoringTarget
-Konfiguration die Endpunktdetails (Port, Pfad, Schema) im AbschnittpodMetricsEndpoints
an, damit sie mit dem Port übereinstimmen, den Sie in der Pod-Spezifikation freigegeben haben.Die folgende YAML-Datei zeigt ein Beispiel für eine
MonitoringTarget
-Konfiguration, in der jeder ausgewählte Pod Messwerte über denselben Endpunkt,http://your-container-name:2112/metrics
, bereitstellen muss:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: # Choose pod labels to consider for this job. # Optional: Map of key-value pairs. # Default: No filtering by label. # To consider every pod in the project namespace, remove selector fields. matchLabels: app: your-app-label podMetricsEndpoints: port: value: 2112 path: # Choose any value for your endpoint. # The /metrics value is an example. value: /metrics scheme: value: http
Wenden Sie die
MonitoringTarget
-Konfiguration auf den Management API-Server im selben Namespace wie Ihre Ziel-Pods an:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Ersetzen Sie Folgendes:
KUBECONFIG_PATH
: der Pfad zur kubeconfig-Datei für den Management API-Server.MONITORING_TARGET_NAME
: der Name derMonitoringTarget
-Definitionsdatei.
Die Monitoring-Plattform beginnt mit der Erfassung von Messwerten.
Annotationen
So stellen Sie Messwerte mithilfe von Annotationen bereit, wenn jeder Pod unterschiedliche Endpunkte hat:
Legen Sie das Distributed Cloud-Projekt fest, aus dem Sie Messwerte für die Überwachung erfassen möchten.
Fügen Sie dem Abschnitt
annotations
der DateiDeployment
Ihres Containers die folgenden Anmerkungen hinzu:prometheus.io/path
prometheus.io/port
prometheus.io/scheme
Das folgende Beispiel zeigt Anmerkungen für Messwerte auf Port
2112
:apiVersion: apps/v1 kind: Deployment metadata: name: your-container-name namespace: your-project-namespace labels: app: your-app-label annotations: # These annotations are not required. They demonstrate selecting # pod metric endpoints through annotations. prometheus.io/path: /metrics prometheus.io/port: \"2112\" prometheus.io/scheme: http
Geben Sie in der
MonitoringTarget
-Konfiguration die Anmerkungen an, die Sie derDeployment
-Datei des Containers im AbschnittpodMetricsEndpoints
hinzugefügt haben. Diese Spezifikation weist die benutzerdefinierte Ressource an, die Informationen zum Messwertendpunkt aus Anmerkungen zu den ausgewählten Pods zu erfassen.Die folgende YAML-Datei zeigt ein Beispiel für eine
MonitoringTarget
-Konfiguration mit Anmerkungen:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: matchLabels: app: your-app-label podMetricsEndpoints: port: annotation: prometheus.io/port path: annotation: prometheus.io/path scheme: annotation: prometheus.io/scheme
Wenden Sie die
MonitoringTarget
-Konfiguration auf den Management API-Server im selben Namespace wie Ihre Ziel-Pods an:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Ersetzen Sie Folgendes:
KUBECONFIG_PATH
: der Pfad zur kubeconfig-Datei für den Management API-Server.MONITORING_TARGET_NAME
: der Name derMonitoringTarget
-Definitionsdatei.
Die Monitoring-Plattform beginnt mit der Erfassung von Messwerten.
Weitere Felder und Optionen finden Sie in der vollständigen MonitoringTarget
-Spezifikation und der API-Referenzdokumentation.
Vollständige MonitoringTarget
-Spezifikation
Die folgende YAML-Datei zeigt ein Beispiel für die vollständige Spezifikation der benutzerdefinierten Ressource MonitoringTarget
. Weitere Informationen und eine vollständige Beschreibung der Felder finden Sie in der API-Referenzdokumentation.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
metadata:
# Choose the same namespace as the workload pods.
namespace: PROJECT_NAMESPACE
name: MONITORING_TARGET_NAME
spec:
# Choose matching pattern that identifies pods for this job.
# Optional
# Relationship between different selectors: AND
selector:
# Choose clusters to consider for this job.
# Optional: List
# Default: All clusters applicable to this project.
# Relationship between different list elements: OR
matchClusters:
- string
# Choose pod labels to consider for this job.
# Optional: Map of key-value pairs.
# Default: No filtering by label.
# Relationship between different pairs: AND
matchLabels:
key1: value1
# Choose annotations to consider for this job.
# Optional: Map of key-value pairs
# Default: No filtering by annotation
# Relationship between different pairs: AND
matchAnnotations:
key1: value1
# Configure the endpoint exposed for this job.
podMetricsEndpoints:
# Choose a port either through static value or annotation.
# Optional
# Annotation takes priority.
# Default: static port 80
port:
value: integer
annotation: string
# Choose a path either through static value or annotation.
# Optional
# Annotation takes priority
# Default: static path /metrics
path:
value: string
annotation: string
# Choose a scheme either through a static value (http or https) or annotation.
# Optional
# Annotation takes priority
# Default: static scheme http
scheme:
value: string
annotation: string
# Choose the frequency to scrape the metrics endpoint defined in podMetricsEndpoints
# Optional
# Default: 60s
scrapeInterval: string
# Dynamically rewrite the label set of a target before it gets scraped.
# https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
# Optional
# Default: No filtering by label
metricsRelabelings:
- sourceLabels:
- string
separator: string
regex: string
action: string
targetLabel: string
replacement: string
Ersetzen Sie Folgendes:
PROJECT_NAMESPACE
: Ihr Projekt-Namespace.MONITORING_TARGET_NAME
: der Name derMonitoringTarget
-Definitionsdatei.