Auf dieser Seite wird erläutert, wie Sie Connect-Agent-Messwerte von Google Distributed Cloud, GKE on AWS oder einem anderen registrierten Kubernetes-Cluster nach Cloud Monitoring exportieren.
Übersicht
In einem Google Distributed Cloud- oder GKE on AWS-Cluster erfasst Prometheus Messwerte und speichert sie lokal im Cluster. Wenn Sie einen Cluster außerhalb von Google Cloud in einer Flotte registrieren, wird ein Deployment 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-sdbereit, eine einfache Komponente, die Prometheus-Messwerte abruft und sie in Cloud Monitoring exportiert.
Anschließend können Sie die Messwerte mithilfe von Monitoring in derGoogle 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)Ersetzen Sie dabei Folgendes:
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: ClusterIPWenden Sie die YAML-Datei auf den Namespace des Connect-Agents in Ihrem Cluster an, wobei
KUBECONFIGder Pfad zur kubeconfig-Datei des Clusters ist:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f gke-connect-agent.yamlWeisen Sie dem Google-Dienstkonto des Gerätepools die IAM-Rolle
roles/monitoring.metricWriterzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"PROJECT_IDist die Projekt-ID Ihres Google Cloud . Informationen zum Ermitteln dieses WertsSERVICE_ACCOUNT_NAMEist 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_IDist die Projekt-ID Ihres Google Cloud . Informationen zum Ermitteln dieses WertsCLUSTER_NAMEist der Kubernetes-Cluster, in dem der Connect-Agent ausgeführt wird.REGIONist 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.ZONEist 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-sdin 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-gcpWenden Sie die YAML-Datei auf den Namespace des Connect-Agents in Ihrem Cluster an, wobei
KUBECONFIGder 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-agentder String ist, der im Argument--sourceangegeben 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}