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 on AWS, Prometheus raccoglie le metriche e le archivia localmente all'interno del cluster. Registrazione di un cluster esterno a Google Cloud in un parco risorse crea un deployment chiamato agente Connect nel cluster. Prometheus raccoglie metriche utili dell'agente Connect, come gli errori di connessione a Google e di connessioni aperte. Per rendere disponibili queste metriche per Cloud Monitoring, devi:
- Esponi 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 e configurazione in Cloud Monitoring.
Successivamente, puoi visualizzare le metriche utilizzando il monitoraggio nella console Google Cloud o inoltrando la porta del servizio e utilizzando curl
.
Creazione di una variabile per lo spazio dei nomi di Connect Agent
In genere, l'agente Connect 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 di Connect Agent 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
all'account di servizio Google del parco:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
PROJECT_ID
è il tuo ID progetto Google Cloud. Scopri come trovare questo valore.SERVICE_ACCOUNT_NAME
è l'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 del tuo progetto Google Cloud. Scopri come trovare questo valore.CLUSTER_NAME
è il nome del cluster Kubernetes in cui viene eseguito l'agente Connect.REGION
è la località geograficamente vicina al luogo dell'esecuzione del cluster. Scegli un'opzione la zona Google Cloud, il cluster è geograficamente vicino al luogo in cui si trova fisicamente il cluster.ZONE
è la località vicino al tuo data center on-premise. Scegli una zona Google Cloud geograficamente vicina al flusso di traffico.
Questa configurazione crea due risorse:
- Un ConfigMap,
prom-to-sd-user-config
, che dichiara diverse variabili per l'utilizzo da parte del deployment - Un deployment,
prometheus-to-monitoring
, che esegueprometheus-to-sd
in un solo 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 tuo 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 Monitoraggio nella console Google Cloud.
Nel menu a sinistra, fai clic su Esplora metriche.
Le metriche di Connect Agent sono precedute da
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 create 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}