Auf dieser Seite wird erläutert, wie Sie Connect-Agent-Messwerte von GKE on VMware, GKE on AWS oder einem anderen registrierten Kubernetes-Cluster nach Cloud Monitoring exportieren.
Überblick
In einem GKE on VMware oder GKE on AWS-Cluster erfasst Prometheus Messwerte und speichert sie lokal im Cluster. Wenn Sie einen Cluster bei der Google Cloud Console registrieren, wird ein Depolyment namens Connect-Agent im Cluster erstellt. Prometheus erfasst nützliche Messwerte von Connect-Agent, z. B. Fehler, die eine Verbindung zu Google herstellen, und die Anzahl der offenen Verbindungen. So stellen Sie diese Messwerte für Cloud Monitoring zur Verfügung:
- Connect-Agent mithilfe eines Dienstes verfügbar machen.
- Stellen Sie
prometheus-to-sd
bereit, eine einfache Komponente, die Prometheus-Messwerte abruft und sie in Cloud Monitoring exportiert.
Anschließend können Sie die Messwerte mithilfe von Monitoring in der Google Cloud Console oder durch Portweiterleitung des Dienstes und curl
aufrufen.
Variable für den Namespace des Connect-Agents erstellen
Connect Agent wird normalerweise im Namespace gke-connect
ausgeführt.
Connect-Agent hat das Label hub.gke.io/project
. Der HTTP-Server überwacht Port 8080.
Erstellen Sie eine Variable namens AGENT_NS
für den Namespace:
AGENT_NS=$(kubectl get ns --kubeconfig KUBECONFIG -o jsonpath={.items..metadata.name} -l hub.gke.io/project=PROJECT_ID)
Dabei gilt:
KUBECONFIG
: Die kubeconfig-Datei für Ihren ClusterPROJECT_ID
: die Projekt-ID
Connect-Agent-Deployment verfügbar machen
Kopieren Sie die folgende Konfiguration in eine YAML-Datei mit dem Namen
gke-connect-agent.yaml
. Mit dieser Konfiguration wird dergke-connect-agent
-Dienst erstellt, der das Deployment des Connect-Agents bereitstellt.apiVersion: v1 kind: Service metadata: labels: app: gke-connect-agent name: gke-connect-agent spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: gke-connect-agent type: ClusterIP
Wenden Sie die YAML-Datei auf den Namespace des Connect-Agents in Ihrem Cluster an, wobei
KUBECONFIG
der Pfad zur kubeconfig-Datei des Clusters ist:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f gke-connect-agent.yaml
Weisen Sie dem Google-Dienstkonto des Gerätepools die IAM-Rolle
roles/monitoring.metricWriter
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
PROJECT_ID
ist Ihre Google Cloud-Projekt-ID. Informationen zum Ermitteln dieses WertsSERVICE_ACCOUNT_NAME
ist das Dienstkonto, das bei der Registrierung des Clusters verwendet wird.
prometheus-to-sd
bereitstellen
Kopieren Sie die folgende Konfiguration in eine YAML-Datei mit dem Namen
prometheus-to-sd.yaml
, wobei:PROJECT_ID
ist Ihre Google Cloud-Projekt-ID. Informationen zum Ermitteln dieses WertsCLUSTER_NAME
ist der Kubernetes-Cluster, in dem der Connect-Agent ausgeführt wird.REGION
ist der Standort, der sich in der Nähe des Clusters befindet. Wählen Sie eine Google Cloud-Zone aus, die sich geografisch in der Nähe des Clusters befindet.ZONE
ist der Standort in der Nähe Ihres lokalen Rechenzentrums. Wählen Sie eine Google Cloud-Zone aus, die geografisch in der Nähe des Traffics liegt.
Mit dieser Konfiguration werden zwei Ressourcen erstellt:
- Die
prom-to-sd-user-config
-ConfigMap, die mehrere Variablen für das Deployment deklariert - Ein
prometheus-to-monitoring
-Deployment, dieprometheus-to-sd
in einem einzelnen Pod ausführt.
apiVersion: v1 kind: ConfigMap metadata: name: prom-to-sd-user-config data: # The project that the Connect Agent uses. Accepts ID or number. project: PROJECT_ID # A name for the cluster, which shows up in Cloud Monitoring. cluster_name: CLUSTER_NAME # cluster_location must be valid (e.g. us-west1-a); shows up in Cloud Monitoring. cluster_location: REGION # A zone name to report (e.g. us-central1-a). zone: ZONE --- apiVersion: apps/v1 kind: Deployment metadata: name: prometheus-to-monitoring spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 2 selector: matchLabels: run: prometheus-to-monitoring template: metadata: labels: run: prometheus-to-monitoring spec: containers: - args: - /monitor # 'gke-connect-agent' is the text that will show up in the Cloud Monitoring metric name. - --source=gke-connect-agent:http://gke-connect-agent:8080 - --monitored-resource-types=k8s - --stackdriver-prefix=custom.googleapis.com - --project-id=$(PROM_PROJECT) - --cluster-name=$(PROM_CLUSTER_NAME) - --cluster-location=$(PROM_CLUSTER_LOCATION) - --zone-override=$(PROM_ZONE) # A node name to report. This is a dummy value. - --node-name=MyGkeConnectAgent env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /etc/creds/creds-gcp.json - name: PROM_PROJECT valueFrom: configMapKeyRef: name: prom-to-sd-user-config key: project - name: PROM_CLUSTER_NAME valueFrom: configMapKeyRef: name: prom-to-sd-user-config key: cluster_name - name: PROM_CLUSTER_LOCATION valueFrom: configMapKeyRef: name: prom-to-sd-user-config key: cluster_location - name: PROM_ZONE valueFrom: configMapKeyRef: name: prom-to-sd-user-config key: zone image: gcr.io/google-containers/prometheus-to-sd:v0.7.1 imagePullPolicy: IfNotPresent name: prometheus-to-monitoring resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/creds name: creds-gcp readOnly: true restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: creds-gcp secret: defaultMode: 420 # This secret is already set up for the Connect Agent. secretName: creds-gcp
Wenden Sie die YAML-Datei auf den Namespace des Connect-Agents in Ihrem Cluster an, wobei
KUBECONFIG
der Pfad zur kubeconfig-Datei des Clusters ist:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f prometheus-to-sd.yaml
Messwerte ansehen
Console
Rufen Sie in der Google Cloud Console die Seite "Monitoring" auf.
Klicken Sie im linken Menü auf Metrics Explorer.
Die Messwerte des Connect-Agents haben das Präfix
custom.googleapis.com/gke-connect-agent/
, wobeigke-connect-agent
der String ist, der im Argument--source
angegeben ist. Beispiel:custom.googleapis.com/gke-connect-agent/gkeconnect_dialer_connection_errors_total
cURL
Verwenden Sie in einer Shell
kubectl
, um dengke-connect-monitoring
-Dienst weiterzuleiten:kubectl -n ${AGENT_NS} port-forward svc/gke-connect-monitoring 8080
Öffnen Sie eine weitere Shell und führen Sie dann Folgendes aus:
curl localhost:8080/metrics
Bereinigen
So löschen Sie die Ressourcen, die Sie in diesem Thema erstellt haben:
AGENT_NS=$(kubectl get ns --kubeconfig KUBECONFIG -o jsonpath={.items..metadata.name} -l hub.gke.io/project) kubectl delete configmap prom-to-sd-user-config --kubeconfig KUBECONFIG -n ${AGENT_NS} kubectl delete service gke-connect-agent --kubeconfig KUBECONFIG -n ${AGENT_NS} kubectl delete deployment prometheus-to-monitoring --kubeconfig KUBECONFIG -n ${AGENT_NS}