בדף הזה מוסבר איך Google Distributed Cloud במודל מחובר מתעד סוגים שונים של מידע על הפעולה שלו, ואיך אפשר לראות את המידע הזה. איסוף של סוגים מסוימים של יומנים ומדדים כרוך בחיובים נוספים. מידע נוסף זמין במאמר חיוב על יומנים ומדדים.
הגדרת רישום ביומן ומעקב
לפני שמתחילים לאסוף יומנים ומדדים, צריך לבצע את הפעולות הבאות:
מפעילים את ממשקי ה-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מקצים את התפקידים שנדרשים לכתיבת יומנים ומדדים:
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_containerk8s_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/Machineedgecontainer.googleapis.com/EdgeZone
Machine מדדי משאבים
Distributed Cloud במודל מחובר כותב את המדדים הבאים של Cloud Monitoring API עבור משאב edgecontainer.googleapis.com/Machine:
| מדד | תיאור |
|---|---|
/machine/cpu/total_cores
|
המספר הכולל של ליבות מעבד פיזיות שקיימות במכונה. |
/machine/cpu/usage_time
|
זמן השימוש המצטבר במעבד לכל הליבות במכונה. הסוג יכול להיות
workload (עומסי עבודה של לקוחות)
או system (כל השאר). |
/machine/cpu/utilization
|
אחוז ניצול המעבד במחשב. הטווח הוא 0 עד 1. הסוג יכול להיות
workload (עומסי עבודה של לקוחות)
או system (כל השאר). |
/machine/memory/total_bytes
|
מספר הבייטים של הזיכרון הכולל במכונה. |
/machine/memory/used_bytes
|
מספר הבייטים של הזיכרון שנעשה בו שימוש במכונה. memory_type הוא evictable (ניתן להחזרה על ידי הליבה) או non-evictable (לא ניתן להחזרה). |
/machine/memory/utilization
|
אחוז ניצול הזיכרון במכונה. הטווח הוא 0 עד 1.
memory_type הוא evictable (ניתן להחזרה לשימוש על ידי הליבה) או non-evictable (לא ניתן להחזרה לשימוש). |
/machine/network/up
|
מציין אם ממשק הרשת פועל. כולל כרטיסים ראשיים, כרטיסים משניים ויציאות. |
/machine/network/link_speed
|
מהירות הקישור של כרטיס הרשת הראשי. |
/machine/network/received_bytes_count
|
מספר הבייטים שהתקבלו בכרטיס הרשת הראשי. |
/machine/network/sent_bytes_count
|
מספר הבייטים שנשלחו לכרטיס הרשת הראשי. |
/machine/network/connectivity
|
מציין אם לכרטיס הרשת הראשי יש קישוריות לאינטרנט. |
/machine/disk/total_bytes
|
מספר הבייטים של נפח האחסון הכולל במחשב. |
/machine/disk/used_bytes
|
מספר הבייטים של נפח האחסון בשימוש במחשב. |
/machine/disk/utilization
|
אחוז ניצול שטח האחסון במחשב. הטווח הוא 0 עד 1. |
/machine/restart_count
|
מספר ההפעלות מחדש שהמחשב עבר. |
/machine/uptime
|
זמן הפעולה של המחשב מאז ההפעלה מחדש האחרונה. |
/machine/connected
|
מציין אם המחשב מחובר ל- Google Cloud. |
EdgeZone מדדי משאבים
Distributed Cloud במודל מחובר כותב את המדדים הבאים של Cloud Monitoring API עבור משאב edgecontainer.googleapis.com/EdgeZone:
| מדד | תיאור |
|---|---|
/edge_zone/state
|
המצב של האזור המחובר של Distributed Cloud. לדוגמה, ACTIVE אם האזור מוגדר, PREPARING אם האזור נוצר אבל לא פעיל, או UNKNOWN בכל מקרה אחר.
|
מדדים של פעולות גיבוי במכונה וירטואלית
Distributed Cloud במודל מחובר אוסף ומייצא את המדדים הבאים שקשורים לסוכן הגיבוי של המכונה הווירטואלית:
| מדד | תיאור |
|---|---|
gdc_backup_backups_completed
|
מספר הגיבויים של מכונות וירטואליות שהושלמו בהצלחה. |
gdc_backup_backups_latency
|
השהייה של גיבויים של מכונות וירטואליות, בדקות. |
gdc_backup_volume_backups_created
|
מספר הגיבויים של אמצעי האחסון שנוצרו עד עכשיו. |
gdc_backup_volume_backups_completed
|
מספר הגיבויים של אמצעי האחסון שהושלמו עד היום. |
gdc_backup_restores_completed
|
מספר השחזורים של מכונות וירטואליות שהושלמו עד היום. |
gdc_backup_restores_latency
|
החביון של שחזורי מכונות וירטואליות, בדקות. |
gdc_backup_volume_restores_created
|
מספר השחזורים של נפח האחסון שנוצרו עד היום. |
gdc_backup_volume_restores_completed
|
מספר השחזורים של נפחים שהושלמו עד היום. |
Distributed Cloud connected אוסף ומייצא את המדדים הבאים שקשורים למישור הבקרה של הגיבוי של המכונה הוירטואלית:
| מדד | תיאור |
|---|---|
gdc_backup_controlplane_live
|
מצוין אם מישור הבקרה של הגיבוי פועל. |
gdc_backup_backup_repositories_attached
|
מספר מאגרי הגיבוי המצורפים. |
gdc_backup_backups_created
|
מספר הגיבויים של המכונה הווירטואלית שנוצרו עד עכשיו. |
gdc_backup_backups_deleted
|
מספר הגיבויים של מכונות וירטואליות שנמחקו עד היום. |
gdc_backup_restores_created
|
מספר השחזורים של מכונות וירטואליות שנוצרו עד היום. |
gdc_gdc_backup_backups_pile_up
|
מציין אם תוכנית גיבוי הגיעה למגבלת מספר הגיבויים שמתבצעים. |
הפתרון Distributed Cloud connected אוסף ומייצא את המדדים הבאים שקשורים לחיוב על הפונקציונליות של גיבוי מכונות וירטואליות:
| מדד | תיאור |
|---|---|
metering_protected_resources_total
|
המספר הכולל של מכונות וירטואליות שגובו עד עכשיו. |
metering_deleted_resources_total
|
המספר הכולל של גיבויי מכונות וירטואליות שנמחקו עד עכשיו. |
ייצוא של יומנים ומדדים של אפליקציות בהתאמה אישית
Distributed Cloud במודל מחובר מייצא באופן אוטומטי יומנים של אפליקציות שפועלות בעומסי עבודה של Distributed Cloud במודל מחובר. כדי לייצא מדדים של אפליקציה שפועלת בעומסי עבודה מקושרים ב-Distributed Cloud, צריך להוסיף לה הערות כמו שמתואר בקטע הבא.
הוספת הערות לעומס העבודה כדי לאפשר ייצוא של מדדים
כדי להפעיל את איסוף המדדים המותאמים אישית מאפליקציה, מוסיפים את ההערות הבאות למניפסט של השירות או הפריסה של האפליקציה:
prometheus.io/scrape: "true"-
prometheus.io/path: "ENDPOINT_PATH". מחליפים אתENDPOINT_PATHבנתיב המלא לנקודת הקצה של המדדים באפליקציית היעד. -
prometheus.io/port: "PORT_NUMBER": היציאה שבה נקודת הקצה של מדדי האפליקציה מאזינה לחיבורים.
הפעלת אפליקציה לדוגמה
בקטע הזה יוצרים אפליקציה שכותבת יומנים מותאמים אישית וחושפת נקודת קצה של מדד מותאם אישית.
שומרים את המניפסטים הבאים של 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יוצרים את הפריסה ואת השירות:
kubectl --kubeconfig apply -f my-app.yaml
צפייה ביומני האפליקציה
המסוף
נכנסים לדף Logs Explorer במסוף Google Cloud .
לוחצים על Resource.
ברשימה All resource types, בוחרים באפשרות
Kubernetes Container.בשדה שם האשכול, בוחרים את השם של אשכול המשתמשים.
בשדה שם מרחב השמות, בוחרים באפשרות
default.לוחצים על Add (הוספה) ואז על Run query (הפעלת שאילתה).
בקטע 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
משתמשים בפקודה
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במזהה הפרויקט.בפלט, אפשר לראות רשומות ביומן מ-
monitoring-exampleDeployment. לדוגמה: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 .
נכנסים לדף Metrics explorer במסוף Google Cloud .
בשדה Resource type, בוחרים באפשרות
Kubernetes Pod.בשדה מדד, בוחרים באפשרות
external/prometheus/example_monitoring_up.בתרשים אפשר לראות של-
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 שמבצעים את עומסי העבודה של היעד באופן הבא:
כדי לשלוח מדדים גם ל-Cloud Monitoring וגם ל-Prometheus, משתמשים בהערות שמתוארות במאמר ייצוא של מדדים ויומנים מותאמים אישית.
כדי לשלוח מדדים רק ל-Prometheus, משתמשים בהערות הבאות:
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.
בשדה הזה אי אפשר להזין מרחבי שמות של המערכת, כמו אלה שמפורטים בהגבלות על מרחבי שמות של ניהול.