Questa pagina spiega come esportare le metriche dell'agente Connect in Cloud Monitoring da Google Distributed Cloud, GKE su AWS o qualsiasi altro cluster Kubernetes registrato.
Panoramica
In un cluster Google Distributed Cloud o GKE su AWS, Prometheus raccoglie le metriche e le archivia localmente all'interno del cluster. La registrazione di un cluster esterno a Google Cloud in un parco risorse crea un deployment denominato Agente Connect nel cluster. Prometheus raccoglie metriche utili dall'agente Connect, come gli errori di connessione a Google e il numero di connessioni aperte. Per rendere disponibili queste metriche a Cloud Monitoring, devi:
- Esporre l'agente Connect utilizzando un servizio.
- Esegui il deployment di
prometheus-to-sd
, un semplice componente che esegue lo scraping delle metriche di Prometheus e le esporta in Cloud Monitoring.
Successivamente, visualizza le metriche utilizzando Monitoring nella consoleGoogle Cloud o inoltrando le porte del servizio e utilizzando curl
.
Creazione di una variabile per lo spazio dei nomi di Connect Agent
In genere, Connect Agent viene eseguito nello spazio dei nomi gke-connect
.
L'agente Connect ha un'etichetta, hub.gke.io/project
. Il server HTTP rimane in ascolto sulla porta 8080.
Crea una variabile, AGENT_NS
, per lo spazio dei nomi:
AGENT_NS=$(kubectl get ns --kubeconfig KUBECONFIG -o jsonpath={.items..metadata.name} -l hub.gke.io/project=PROJECT_ID)
Sostituisci quanto segue:
KUBECONFIG
: il file kubeconfig per il clusterPROJECT_ID
: l'ID progetto
Esposizione del deployment dell'agente Connect
Copia la seguente configurazione in un file YAML denominato
gke-connect-agent.yaml
. Questa configurazione crea un servizio,gke-connect-agent
, che espone il deployment dell'agente Connect.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
Applica il file YAML allo spazio dei nomi dell'agente Connect nel cluster, dove
KUBECONFIG
è il percorso del file kubeconfig del cluster:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f gke-connect-agent.yaml
Associa il ruolo IAM
roles/monitoring.metricWriter
al account di servizio Google del parco progetti:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
PROJECT_ID
è l'ID progetto Google Cloud . Scopri come trovare questo valore.SERVICE_ACCOUNT_NAME
è il account di servizio utilizzato durante la registrazione del cluster.
Deployment di prometheus-to-sd
in corso…
Copia la seguente configurazione in un file YAML denominato
prometheus-to-sd.yaml
dove:PROJECT_ID
è l'ID progetto Google Cloud . Scopri come trovare questo valore.CLUSTER_NAME
è il cluster Kubernetes in cui viene eseguito l'agente Connect.REGION
è la località geograficamente vicina a dove viene eseguito il cluster. Scegli una Google Cloud zona geograficamente vicina alla posizione fisica del cluster.ZONE
è la località vicino al tuo data center on-premise. Scegli una Google Cloud zona geograficamente vicina al flusso di traffico.
Questa configurazione crea due risorse:
- Un ConfigMap,
prom-to-sd-user-config
, che dichiara diverse variabili da utilizzare per il deployment - Un deployment,
prometheus-to-monitoring
, che esegueprometheus-to-sd
in un singolo pod.
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
Applica il file YAML allo spazio dei nomi dell'agente Connect nel cluster, dove
KUBECONFIG
è il percorso del file kubeconfig del cluster:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f prometheus-to-sd.yaml
Visualizzazione delle metriche
Console
Vai alla pagina Monitoring nella console Google Cloud .
Nel menu a sinistra, fai clic su Esplora metriche.
Le metriche dell'agente Connect hanno il prefisso
custom.googleapis.com/gke-connect-agent/
, dovegke-connect-agent
è la stringa specificata nell'argomento--source
. Ad esempio,custom.googleapis.com/gke-connect-agent/gkeconnect_dialer_connection_errors_total
cURL
In una shell, utilizza
kubectl
per il port forwarding del serviziogke-connect-monitoring
:kubectl -n ${AGENT_NS} port-forward svc/gke-connect-monitoring 8080
Apri un'altra shell ed esegui:
curl localhost:8080/metrics
Pulizia
Per eliminare le risorse che hai creato in questo argomento:
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}