יומנים ומדדים

בדף הזה מוסבר איך Google Distributed Cloud במודל מחובר מתעד סוגים שונים של מידע על הפעולה שלו, ואיך אפשר לראות את המידע הזה. איסוף של סוגים מסוימים של יומנים ומדדים כרוך בחיובים נוספים. מידע נוסף זמין במאמר חיוב על יומנים ומדדים.

הגדרת רישום ביומן ומעקב

לפני שמתחילים לאסוף יומנים ומדדים, צריך לבצע את הפעולות הבאות:

  1. מפעילים את ממשקי ה-API של רישום ביומן באמצעות הפקודות הבאות:

    gcloud services enable opsconfigmonitoring.googleapis.com --project PROJECT_ID
    gcloud services enable logging.googleapis.com --project PROJECT_ID
    gcloud services enable monitoring.googleapis.com --project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה של פרויקט היעד. Google Cloud

  2. מקצים את התפקידים שנדרשים לכתיבת יומנים ומדדים:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/opsconfigmonitoring.resourceMetadata.writer \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/metadata-agent]"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/logging.logWriter \
         --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver-log-forwarder]"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/monitoring.metricWriter \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/gke-metrics-agent]"
    

    מחליפים את PROJECT_ID במזהה של פרויקט היעד. Google Cloud

יומנים

בקטע הזה מפורטים סוגי המשאבים של Cloud Logging שנתמכים ב-Distributed Cloud. כדי לראות את היומנים של Distributed Cloud, משתמשים ב-Logs Explorer במסוף Google Cloud . הרישום ביומן של Distributed Cloud תמיד מופעל.

סוגי המשאבים המחוברים שנרשמים ביומן ב-Distributed Cloud הם משאבי Kubernetes רגילים:

  • k8s_container
  • k8s_node

אפשר גם לתעד ולאחזר יומנים שמקושרים ל-Distributed Cloud באמצעות Cloud Logging API. מידע על הגדרת מנגנון הרישום ביומן הזה זמין במאמרי העזרה של ספריות הלקוח של Cloud Logging.

מדדים

בקטע הזה מפורטים המדדים של Cloud Monitoring שנתמכים ב-Distributed Cloud. כדי לראות את המדדים של Distributed Cloud, משתמשים בMetrics Explorer בGoogle Cloud מסוף.

מדדים של אשכול מחובר ב-Distributed Cloud

במקרים של אשכולות מחוברים של Distributed Cloud,‏ Distributed Cloud במודל מחובר מספק את סוגי המדדים הבאים שנוצרים על ידי צמתים מחוברים של Distributed Cloud:

  • מדדי משאבים מספקים מידע על הביצועים של צומת מחובר ו-Pod ב-Distributed Cloud, כמו עומס המעבד ושימוש בזיכרון.
  • מדדים של אפליקציות במערכת מספקים מידע על עומסי עבודה של מערכות שמחוברות ל-Distributed Cloud, כמו coredns.

רשימה של המדדים האלה מופיעה במאמר מדדים של Google Distributed Cloud ו-Google Distributed Cloud.

‫Distributed Cloud במודל מחובר לא מספק מדדים שנוצרו על ידי מישורי הבקרה של Kubernetes שמשויכים לאשכולות של Distributed Cloud במודל מחובר.

מדדים של ציוד מחובר ב-Distributed Cloud

‫Distributed Cloud במודל מחובר מספק מדדים לחומרה של Distributed Cloud במודל מחובר באמצעות סוגי המשאבים הבאים:

  • edgecontainer.googleapis.com/Machine
  • edgecontainer.googleapis.com/EdgeZone

Machine מדדי משאבים

‫Distributed Cloud במודל מחובר כותב את המדדים הבאים של Cloud Monitoring API עבור משאב edgecontainer.googleapis.com/Machine:

מדד תיאור
/machine/cpu/total_cores
  • סוג: GAUGE
  • סוג: INT
המספר הכולל של ליבות מעבד פיזיות שקיימות במכונה.
/machine/cpu/usage_time
  • סוג: CUMULATIVE
  • סוג: DOUBLE
  • יחידה: Seconds
זמן השימוש המצטבר במעבד לכל הליבות במכונה. הסוג יכול להיות workload (עומסי עבודה של לקוחות) או system (כל השאר).
/machine/cpu/utilization
  • סוג: GAUGE
  • סוג: DOUBLE
אחוז ניצול המעבד במחשב. הטווח הוא 0 עד 1. הסוג יכול להיות workload (עומסי עבודה של לקוחות) או system (כל השאר).
/machine/memory/total_bytes
  • סוג: GAUGE
  • סוג: INT64
מספר הבייטים של הזיכרון הכולל במכונה.
/machine/memory/used_bytes
  • סוג: GAUGE
  • סוג: INT64
מספר הבייטים של הזיכרון שנעשה בו שימוש במכונה. ‫memory_type הוא evictable (ניתן להחזרה על ידי הליבה) או non-evictable (לא ניתן להחזרה).
/machine/memory/utilization
  • סוג: GAUGE
  • סוג: DOUBLE
אחוז ניצול הזיכרון במכונה. הטווח הוא 0 עד 1. ‫memory_type הוא evictable (ניתן להחזרה לשימוש על ידי הליבה) או non-evictable (לא ניתן להחזרה לשימוש).
/machine/network/up
  • סוג: GAUGE
  • סוג: BOOL
מציין אם ממשק הרשת פועל. כולל כרטיסים ראשיים, כרטיסים משניים ויציאות.
/machine/network/link_speed
  • סוג: GAUGE
  • סוג: DOUBLE
  • יחידה: בייטים לשנייה
מהירות הקישור של כרטיס הרשת הראשי.
/machine/network/received_bytes_count
  • סוג: CUMULATIVE
  • סוג: DOUBLE
מספר הבייטים שהתקבלו בכרטיס הרשת הראשי.
/machine/network/sent_bytes_count
  • סוג: CUMULATIVE
  • סוג: DOUBLE
מספר הבייטים שנשלחו לכרטיס הרשת הראשי.
/machine/network/connectivity
  • סוג: GAUGE
  • סוג: BOOL
מציין אם לכרטיס הרשת הראשי יש קישוריות לאינטרנט.
/machine/disk/total_bytes
  • סוג: GAUGE
  • סוג: INT64
מספר הבייטים של נפח האחסון הכולל במחשב.
/machine/disk/used_bytes
  • סוג: GAUGE
  • סוג: INT64
מספר הבייטים של נפח האחסון בשימוש במחשב.
/machine/disk/utilization
  • סוג: GAUGE
  • סוג: DOUBLE
אחוז ניצול שטח האחסון במחשב. הטווח הוא 0 עד 1.
/machine/restart_count
  • סוג: CUMULATIVE
  • סוג: INT
מספר ההפעלות מחדש שהמחשב עבר.
/machine/uptime
  • סוג: GAUGE
  • סוג: INT
  • יחידה: Seconds
זמן הפעולה של המחשב מאז ההפעלה מחדש האחרונה.
/machine/connected
  • סוג: GAUGE
  • סוג: INT64
מציין אם המחשב מחובר ל- Google Cloud.

EdgeZone מדדי משאבים

‫Distributed Cloud במודל מחובר כותב את המדדים הבאים של Cloud Monitoring API עבור משאב edgecontainer.googleapis.com/EdgeZone:

מדד תיאור
/edge_zone/state
  • סוג: GAUGE
  • סוג: BOOL
המצב של האזור המחובר של Distributed Cloud. לדוגמה, ACTIVE אם האזור מוגדר, PREPARING אם האזור נוצר אבל לא פעיל, או UNKNOWN בכל מקרה אחר.

מדדים של פעולות גיבוי במכונה וירטואלית

‫Distributed Cloud במודל מחובר אוסף ומייצא את המדדים הבאים שקשורים לסוכן הגיבוי של המכונה הווירטואלית:

מדד תיאור
gdc_backup_backups_completed
  • סוג: COUNTER
מספר הגיבויים של מכונות וירטואליות שהושלמו בהצלחה.
gdc_backup_backups_latency
  • סוג: HISTOGRAM
השהייה של גיבויים של מכונות וירטואליות, בדקות.
gdc_backup_volume_backups_created
  • סוג: COUNTER
מספר הגיבויים של אמצעי האחסון שנוצרו עד עכשיו.
gdc_backup_volume_backups_completed
  • סוג: COUNTER
מספר הגיבויים של אמצעי האחסון שהושלמו עד היום.
gdc_backup_restores_completed
  • סוג: COUNTER
מספר השחזורים של מכונות וירטואליות שהושלמו עד היום.
gdc_backup_restores_latency
  • סוג: HISTOGRAM
החביון של שחזורי מכונות וירטואליות, בדקות.
gdc_backup_volume_restores_created
  • סוג: COUNTER
מספר השחזורים של נפח האחסון שנוצרו עד היום.
gdc_backup_volume_restores_completed
  • סוג: COUNTER
מספר השחזורים של נפחים שהושלמו עד היום.

‫Distributed Cloud connected אוסף ומייצא את המדדים הבאים שקשורים למישור הבקרה של הגיבוי של המכונה הוירטואלית:

מדד תיאור
gdc_backup_controlplane_live
  • סוג: GAUGE
מצוין אם מישור הבקרה של הגיבוי פועל.
gdc_backup_backup_repositories_attached
  • סוג: GAUGE
מספר מאגרי הגיבוי המצורפים.
gdc_backup_backups_created
  • סוג: COUNTER
מספר הגיבויים של המכונה הווירטואלית שנוצרו עד עכשיו.
gdc_backup_backups_deleted
  • סוג: COUNTER
מספר הגיבויים של מכונות וירטואליות שנמחקו עד היום.
gdc_backup_restores_created
  • סוג: COUNTER
מספר השחזורים של מכונות וירטואליות שנוצרו עד היום.
gdc_gdc_backup_backups_pile_up
  • סוג: GAUGE
מציין אם תוכנית גיבוי הגיעה למגבלת מספר הגיבויים שמתבצעים.

הפתרון Distributed Cloud connected אוסף ומייצא את המדדים הבאים שקשורים לחיוב על הפונקציונליות של גיבוי מכונות וירטואליות:

מדד תיאור
metering_protected_resources_total
  • מקור: סוכן גיבוי של מכונה וירטואלית
  • סוג: COUNTER
המספר הכולל של מכונות וירטואליות שגובו עד עכשיו.
metering_deleted_resources_total
  • מקור: מישור הבקרה של גיבוי המכונה הווירטואלית
  • סוג: COUNTER
המספר הכולל של גיבויי מכונות וירטואליות שנמחקו עד עכשיו.

ייצוא של יומנים ומדדים של אפליקציות בהתאמה אישית

‫Distributed Cloud במודל מחובר מייצא באופן אוטומטי יומנים של אפליקציות שפועלות בעומסי עבודה של Distributed Cloud במודל מחובר. כדי לייצא מדדים של אפליקציה שפועלת בעומסי עבודה מקושרים ב-Distributed Cloud, צריך להוסיף לה הערות כמו שמתואר בקטע הבא.

הוספת הערות לעומס העבודה כדי לאפשר ייצוא של מדדים

כדי להפעיל את איסוף המדדים המותאמים אישית מאפליקציה, מוסיפים את ההערות הבאות למניפסט של השירות או הפריסה של האפליקציה:

  • prometheus.io/scrape: "true"
  • prometheus.io/path: "ENDPOINT_PATH". מחליפים את ENDPOINT_PATH בנתיב המלא לנקודת הקצה של המדדים באפליקציית היעד.
  • prometheus.io/port: "PORT_NUMBER": היציאה שבה נקודת הקצה של מדדי האפליקציה מאזינה לחיבורים.

הפעלת אפליקציה לדוגמה

בקטע הזה יוצרים אפליקציה שכותבת יומנים מותאמים אישית וחושפת נקודת קצה של מדד מותאם אישית.

  1. שומרים את המניפסטים הבאים של Service ו-Deployment בקובץ בשם my-app.yaml. שימו לב שהשירות כולל את ההערה prometheus.io/scrape: "true":

    kind: Service
    apiVersion: v1
    metadata:
      name: "monitoring-example"
      namespace: "default"
      annotations:
        prometheus.io/scrape: "true"
    spec:
      selector:
        app: "monitoring-example"
      ports:
        - name: http
          port: 9090
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: "monitoring-example"
      namespace: "default"
      labels:
        app: "monitoring-example"
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: "monitoring-example"
      template:
        metadata:
          labels:
            app: "monitoring-example"
        spec:
          containers:
          - image: gcr.io/google-samples/prometheus-dummy-exporter:latest
            name: prometheus-example-exporter
            imagePullPolicy: Always
            command:
            - /bin/sh
            - -c
            - ./prometheus-dummy-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090
            resources:
              requests:
                cpu: 100m
    
  2. יוצרים את הפריסה ואת השירות:

    kubectl --kubeconfig apply -f my-app.yaml

צפייה ביומני האפליקציה

המסוף

  1. נכנסים לדף Logs Explorer במסוף Google Cloud .

    כניסה לדף Logs Explorer

  2. לוחצים על Resource.

  3. ברשימה All resource types, בוחרים באפשרות Kubernetes Container.

  4. בשדה שם האשכול, בוחרים את השם של אשכול המשתמשים.

  5. בשדה שם מרחב השמות, בוחרים באפשרות default.

  6. לוחצים על Add (הוספה) ואז על Run query (הפעלת שאילתה).

  7. בקטע Query results אפשר לראות רשומות ביומן מפריסת monitoring-example. לדוגמה:

    {
      "textPayload": "2020/11/14 01:24:24 Starting to listen on :9090\n",
      "insertId": "1oa4vhg3qfxidt",
      "resource": {
        "type": "k8s_container",
        "labels": {
          "pod_name": "monitoring-example-7685d96496-xqfsf",
          "cluster_name": ...,
          "namespace_name": "default",
          "project_id": ...,
          "location": "us-west1",
          "container_name": "prometheus-example-exporter"
        }
      },
      "timestamp": "2020-11-14T01:24:24.358600252Z",
      "labels": {
        "k8s-pod/pod-template-hash": "7685d96496",
        "k8s-pod/app": "monitoring-example"
      },
      "logName": "projects/.../logs/stdout",
      "receiveTimestamp": "2020-11-14T01:24:39.562864735Z"
    }
    

gcloud

  1. משתמשים בפקודה gcloud logging read:

    gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \
        resource.type="k8s_container" AND resource.labels.namespace_name="default"'

    מחליפים את PROJECT_ID במזהה הפרויקט.

  2. בפלט, אפשר לראות רשומות ביומן מ-monitoring-example Deployment. לדוגמה:

    insertId: 1oa4vhg3qfxidt
    labels:
      k8s-pod/app: monitoring-example
      k8s- pod/pod-template-hash: 7685d96496
    logName: projects/.../logs/stdout
    receiveTimestamp: '2020-11-14T01:24:39.562864735Z'
    resource:
      labels:
        cluster_name: ...
        container_name: prometheus-example-exporter
        location: us-west1
        namespace_name: default
        pod_name: monitoring-example-7685d96496-xqfsf
        project_id: ...
      type: k8s_container
    textPayload: |
      2020/11/14 01:24:24 Starting to listen on :9090
    timestamp: '2020-11-14T01:24:24.358600252Z'
    

הצגת מדדי האפליקציה

האפליקציה לדוגמה חושפת מדד מותאם אישית בשם example_monitoring_up. אפשר לראות את הערכים של המדד הזה במסוף Google Cloud .

  1. נכנסים לדף Metrics explorer במסוף Google Cloud .

    כניסה לדף Metrics Explorer

  2. בשדה Resource type, בוחרים באפשרות Kubernetes Pod.

  3. בשדה מדד, בוחרים באפשרות external/prometheus/example_monitoring_up.

  4. בתרשים אפשר לראות של-example_monitoring_up יש ערך חוזר של 1.

איסוף מדדים באמצעות Prometheus

‫Google Distributed Cloud במודל מחובר תומך בפתרון המדדים Prometheus לאיסוף מדדים בעומסי העבודה שלכם ב-Google Distributed Cloud במודל מחובר.

לשם כך, כשיוצרים אשכול של Distributed Cloud במודל מחובר, נוצר מרחב שמות לא מנוהל בשם prom-monitoring. מומלץ להשתמש במרחב השמות הזה כדי לפרוס את Prometheus. אפשר גם להעתיק את המשאבים הנדרשים ממרחב השמות prom-monitoring למרחב שמות לבחירתכם ולפרוס את Prometheus שם.

הגדרת גירוד מדדים של Prometheus

כדי לאסוף מדדים שמחוברים ל-Distributed Cloud באמצעות Prometheus, צריך להגדיר את הגישה של Prometheus למדדים. כדי לעשות זאת, צריך לטעון את prometheus-scrape-configConfigMap ב-Prometheus Pod ולהוסיף את הגדרת הגירוד מ-ConfigMap להגדרת Prometheus. לדוגמה:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-local-rolebinding
  namespace: prom-monitoring
subjects:
- kind: ServiceAccount
  name: prometheus-scrape
  namespace: prom-monitoring
roleRef:
  kind: ClusterRole
  name: gke-metrics-agent
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: prom-monitoring
data:
  prometheus.yml: |
    global:
      scrape_interval: 5s
      evaluation_interval: 5s
    rule_files:
    scrape_config_files:
    - /etc/prometheus/scrape/*.yml
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
  namespace: prom-monitoring
spec:
  selector:
    app: prom-monitoring
  ports:
  - port: 9090
    targetPort: 9090
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-deployment
  namespace: prom-monitoring
  labels:
    app: prom-monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prom-monitoring
  template:
    metadata:
      labels:
        app: prom-monitoring
    spec:
      serviceAccountName: prometheus-scrape
      containers:
        - name: prometheus
          image: prom/prometheus:main
          args:
            - "--config.file=/etc/prometheus/prometheus.yml"
            - "--storage.tsdb.path=/prometheus/"
          ports:
            - containerPort: 9090
          volumeMounts:
            - name: prometheus-config-volume
              mountPath: /etc/prometheus/
            - name: prometheus-scrape-config-volume
              mountPath: /etc/prometheus/scrape/
            - name: prometheus-storage-volume
              mountPath: /prometheus/
            - name: prometheus-scrape-token
              mountPath: /var/run/secrets/kubernetes.io/stackdriver-prometheus-scrape
            - name: stackdriver-prometheus-scrape-cert
              mountPath: /certs/stackdriver-prometheus-scrape
            - name: stackdriver-prometheus-etcd-scrape
              mountPath: /stackdriver-prometheus-etcd-scrape
      volumes:
        - name: prometheus-storage-volume
          emptyDir: {}
        - name: prometheus-config-volume
          configMap:
            defaultMode: 420
            name: prometheus-config
        - name: prometheus-scrape-config-volume
          configMap:
            defaultMode: 420
            name: prometheus-scrape-config
        - name: prometheus-scrape-token
          secret:
            defaultMode: 420
            secretName: prometheus-scrape
        - name: stackdriver-prometheus-scrape-cert
          secret:
            defaultMode: 420
            optional: true
            secretName: stackdriver-prometheus-scrape-cert
        - name: stackdriver-prometheus-etcd-scrape
          secret:
            defaultMode: 420
            optional: true
            secretName: stackdriver-prometheus-etcd-scrape

כדי לאסוף מדדי עומסי עבודה באמצעות Prometheus, צריך להוסיף הערות ל-Services ול-Pods שמבצעים את עומסי העבודה של היעד באופן הבא:

prometheus.io/unmanaged_scrape: "true"
prometheus.io/unmanaged_path: "ENDPOINT_PATH"
prometheus.io/unmanaged_port: "PORT_NUMBER"

איסוף יומנים באמצעות Kafka

‫Google Distributed Cloud במודל מחובר תומך בפתרון Apache Kafka לאיסוף יומנים בעומסי עבודה שפועלים בפריסת Google Distributed Cloud במודל מחובר.

לפני שמבצעים את השלבים שבקטע הזה, צריך לוודא שיש פריסת Kafka תקינה. הברוקרים של Kafka צריכים לפרסם את המאזינים שלהם במצב PLAINTEXT. משתנים שקשורים ל-SSL/SASL לא נתמכים.

כדי להגדיר אשכול לרישום ביומן של Kafka, צריך ליצור קובץ JSON שמגדיר תוספים שרוצים להפעיל באשכול. מציינים את הקובץ הזה כשיוצרים אשכול באמצעות הדגל --system-addons-config. אם אתם צריכים לשנות את ההגדרה של Kafka, אתם צריכים למחוק את האשכול וליצור אותו מחדש עם ההגדרות החדשות של Kafka.

מוסיפים את הקטע הבא לקובץ התצורה של תוספי המערכת:

{
        "systemAddonsConfig": {
          "unmanagedKafkaConfig": {
            "brokers": "BROKERS",
            "topics": "TOPICS"
     "topic_key": "TOPIC_KEY, 
          }
      }
}

מחליפים את מה שכתוב בשדות הבאים:

  • BROKERS: רשימה מופרדת בפסיקים של כתובות IP של ברוקרים וזוגות יציאות בפורמט ip_address:port.
  • TOPICS: רשימה מופרדת בפסיקים של נושאי Kafka.
  • TOPIC_KEY: מפתח של נושא Kafka. המפתח הזה מאפשר ל-Kafka לבחור נושא אם קיימים כמה נושאים.

אם Kafka לא אוסף יומנים אחרי שיצרתם אשכול מחובר של Distributed Cloud, כדאי לבדוק את הדברים הבאים:

  • בצד השרת: בודקים את יומני השגיאות בפריסת Kafka כדי לראות אם יש אינדיקציות לבעיה.
  • בצד הלקוח: פונים לתמיכה של Google כדי לאחזר ולבדוק את היומנים של Pod המערכת.

איסוף יומנים גולמיים של עומסי עבודה לעיבוד חיצוני

אתם יכולים להגדיר את Distributed Cloud Connected לייצא יומנים של עומסי עבודה בפורמט גולמי (לא מעובד ולא מתויג) אל /var/logs/export, וכך להשתמש בכלי משלכם לאיסוף יומנים לצורך עיבוד יומנים.

כדי להגדיר ייצוא של יומנים גולמיים של עומסי עבודה, יוצרים משאב מותאם אישית LogExport עם התוכן הבא, ואז מחילים אותו על האשכול:

apiVersion: gdc.addons.gke.io/v1
kind: LogExport
metadata:
  name: my-log-export
spec:
  namespaces:
  - namespace1
  - namespace2
  - namespace3

בשדה namespaces, מפרטים את מרחבי השמות של עומסי העבודה שרוצים לייצא עבורם יומנים של Pods. בשדה הזה אי אפשר להזין מרחבי שמות של המערכת, כמו אלה שמפורטים בהגבלות על מרחבי שמות של ניהול.

המאמרים הבאים