Halaman ini menjelaskan cara mengekspor metrik Connect Agent ke Cloud Monitoring dari GKE di VMware, GKE di AWS, atau cluster Kubernetes lainnya yang terdaftar.
Ringkasan
Di GKE pada VMware atau GKE di cluster AWS, Prometheus mengumpulkan metrik dan menyimpannya secara lokal di dalam cluster. Mendaftarkan cluster dengan Konsol Google Cloud akan membuat Deployment yang disebut Connect Agent dalam cluster. Prometheus mengumpulkan metrik yang berguna dari Connect Agent, seperti error saat menghubungkan ke Google dan jumlah koneksi yang terbuka. Agar metrik ini tersedia untuk Cloud Monitoring, Anda harus:
- Mengekspos Agen Connect menggunakan Layanan.
- Deploy
prometheus-to-sd
, komponen sederhana yang menyalin metrik Prometheus dan mengekspornya ke Cloud Monitoring.
Setelah itu, Anda akan melihat metrik dengan menggunakan Monitoring di Konsol Google Cloud, atau dengan meneruskan port Layanan dan menggunakan curl
.
Membuat variabel untuk namespace Connect Agent
Connect Agent biasanya berjalan di namespace gke-connect
.
Hubungkan Agen memiliki label, hub.gke.io/project
. Server HTTP memantau
port 8080.
Buat variabel, AGENT_NS
, untuk namespace:
AGENT_NS=$(kubectl get ns --kubeconfig KUBECONFIG -o jsonpath={.items..metadata.name} -l hub.gke.io/project=PROJECT_ID)
Ganti kode berikut:
KUBECONFIG
: file kubeconfig untuk cluster AndaPROJECT_ID
: the project ID
Mengekspos Deployment Agen Connect
Salin konfigurasi berikut ke file YAML bernama
gke-connect-agent.yaml
. Konfigurasi ini membuat Layanan,gke-connect-agent
, yang mengekspos Connect Agent Deployment.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
Terapkan file YAML ke namespace Agen Connect di cluster Anda, dengan
KUBECONFIG
adalah jalur ke file kubeconfig cluster:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f gke-connect-agent.yaml
Ikat peran IAM
roles/monitoring.metricWriter
dengan akun layanan Google fleet:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
PROJECT_ID
adalah ID project Google Cloud Anda. Pelajari cara menemukan nilai ini.SERVICE_ACCOUNT_NAME
adalah akun layanan yang digunakan saat mendaftarkan cluster.
Men-deploy prometheus-to-sd
Salin konfigurasi berikut ke file YAML, bernama
prometheus-to-sd.yaml
, dengan nama:PROJECT_ID
adalah ID project Google Cloud Anda. Pelajari cara menemukan nilai ini.CLUSTER_NAME
adalah cluster Kubernetes tempat Connect Agent dijalankan.REGION
adalah lokasi yang secara geografis dekat dengan tempat cluster Anda berjalan. Pilih zona Google Cloud yang secara geografis dekat dengan lokasi cluster secara fisik.ZONE
adalah lokasi di dekat pusat data lokal Anda. Pilih zona Google Cloud yang secara geografis dekat dengan tempat traffic mengalir.
Konfigurasi ini membuat dua resource:
- ConfigMap,
prom-to-sd-user-config
, yang mendeklarasikan beberapa variabel untuk digunakan oleh Deployment - Deployment,
prometheus-to-monitoring
, yang menjalankanprometheus-to-sd
dalam satu 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
Terapkan file YAML ke namespace Agen Connect di cluster Anda, dengan
KUBECONFIG
adalah jalur ke file kubeconfig cluster:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f prometheus-to-sd.yaml
Melihat metrik
Konsol
Buka halaman Monitoring di Konsol Google Cloud.
Dari menu kiri, klik Metrics Explorer.
Metrik Agen Connect diawali dengan
custom.googleapis.com/gke-connect-agent/
, dengangke-connect-agent
sebagai string yang ditentukan dalam argumen--source
. Misalnya,custom.googleapis.com/gke-connect-agent/gkeconnect_dialer_connection_errors_total
cURL
Dalam shell ini, gunakan
kubectl
untuk meneruskan port Layanangke-connect-monitoring
:kubectl -n ${AGENT_NS} port-forward svc/gke-connect-monitoring 8080
Buka shell lain, lalu jalankan:
curl localhost:8080/metrics
Pembersihan
Untuk menghapus referensi yang Anda buat dalam topik ini:
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}