בדף הזה מוסבר איך לייצא מדדים של Connect Agent אל Cloud Monitoring מ-Google Distributed Cloud, מ-GKE ב-AWS או מכל אשכול Kubernetes רשום אחר.
סקירה כללית
באשכול Google Distributed Cloud או GKE ב-AWS, Prometheus אוסף מדדים ומאחסן אותם באופן מקומי באשכול. רישום אשכול מחוץ ל- Google Cloud ב-Fleet יוצר פריסה בשם Connect Agent באשכול. Prometheus אוסף מדדים שימושיים מ-Connect Agent, כמו שגיאות בחיבור ל-Google ומספר החיבורים הפתוחים. כדי שהמדדים האלה יהיו זמינים ב-Cloud Monitoring, צריך:
- חשיפת סוכן Connect באמצעות שירות.
- פריסת
prometheus-to-sd, רכיב פשוט שמגרד מדדים של Prometheus ומייצא אותם ל-Cloud Monitoring.
אחרי כן, אפשר לראות את המדדים באמצעות Monitoring בGoogle Cloud מסוף, או באמצעות העברת פורטים של השירות ושימוש ב-curl.
יצירת משתנה למרחב השמות של Connect Agent
הסוכן Connect Agent פועל בדרך כלל במרחב השמות gke-connect.
לסוכן Connect יש תווית, hub.gke.io/project. שרת ה-HTTP מאזין ביציאה 8080.
יוצרים משתנה, AGENT_NS, למרחב השמות:
AGENT_NS=$(kubectl get ns --kubeconfig KUBECONFIG -o jsonpath={.items..metadata.name} -l hub.gke.io/project=PROJECT_ID)מחליפים את מה שכתוב בשדות הבאים:
-
KUBECONFIG: קובץ ה-kubeconfig של האשכול -
PROJECT_ID: מזהה הפרויקט
חשיפת הפריסה של סוכן Connect
מעתיקים את ההגדרות הבאות לקובץ YAML בשם
gke-connect-agent.yaml. ההגדרה הזו יוצרת שירות,gke-connect-agent, שחושף את הפריסה של סוכן 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מחילים את קובץ ה-YAML על מרחב השמות של Connect Agent באשכול, כאשר
KUBECONFIGהוא הנתיב לקובץ kubeconfig של האשכול:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f gke-connect-agent.yamlמקשרים את התפקיד
roles/monitoring.metricWriterב-IAM לחשבון השירות של Google בצי:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"-
PROJECT_IDהוא מזהה הפרויקט. Google Cloud איך מוצאים את הערך הזה -
SERVICE_ACCOUNT_NAMEהוא חשבון השירות שבו נעשה שימוש כשרושמים את האשכול.
-
פריסה של prometheus-to-sd
מעתיקים את ההגדרה הבאה לקובץ YAML בשם
prometheus-to-sd.yaml, כאשר:-
PROJECT_IDהוא מזהה הפרויקט. Google Cloud איך מוצאים את הערך הזה -
CLUSTER_NAMEהוא שם אשכול Kubernetes שבו פועל Connect Agent. -
REGIONהוא המיקום שקרוב מבחינה גיאוגרפית למיקום שבו פועל האשכול. בוחרים Google Cloud אזור שקרוב מבחינה גיאוגרפית למיקום הפיזי של האשכול. -
ZONEהוא המיקום שקרוב למרכז הנתונים המקומי. בוחרים אזור Google Cloud שקרוב מבחינה גיאוגרפית למקום שבו התנועה זורמת.
ההגדרה הזו יוצרת שני משאבים:
- ConfigMap,
prom-to-sd-user-config, שמצהיר על כמה משתנים לשימוש על ידי הפריסה - פריסה,
prometheus-to-monitoring, שמריצה אתprometheus-to-sdבקפסולה אחת.
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-
מחילים את קובץ ה-YAML על מרחב השמות של Connect Agent באשכול, כאשר
KUBECONFIGהוא הנתיב לקובץ kubeconfig של האשכול:kubectl apply -n ${AGENT_NS} --kubeconfig KUBECONFIG -f prometheus-to-sd.yaml
הצגת מדדים
המסוף
עוברים לדף Monitoring במסוף Google Cloud .
בתפריט הימני, לוחצים על Metrics Explorer.
למדדים של Connect Agent מצורפת הקידומת
custom.googleapis.com/gke-connect-agent/, כאשרgke-connect-agentהיא המחרוזת שצוינה בארגומנט--source. לדוגמה,custom.googleapis.com/gke-connect-agent/gkeconnect_dialer_connection_errors_total
cURL
במעטפת, משתמשים בפקודה
kubectlכדי להעביר את שירותgke-connect-monitoring:kubectl -n ${AGENT_NS} port-forward svc/gke-connect-monitoring 8080פותחים מעטפת אחרת ומריצים:
curl localhost:8080/metrics
סידור וארגון
כדי למחוק את המשאבים שיצרתם בנושא הזה:
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}