במאמר הזה מוסבר איך להגדיר את Google Kubernetes Engine (GKE) כדי לשלוח מדדים אל Cloud Monitoring. אפשר להשתמש במדדים ב-Cloud Monitoring כדי לאכלס לוחות בקרה בהתאמה אישית, ליצור התראות, ליצור יעדים ברמת השירות או לאחזר אותם באמצעות Cloud Monitoring API על ידי שירותי מעקב של צד שלישי.
GKE מספק כמה מקורות של מדדים:
- מדדי מערכת: מדדים מרכיבי מערכת חיוניים, שמתארים משאבים ברמה נמוכה כמו מעבד (CPU), זיכרון ואחסון.
- השירות המנוהל של Google Cloud ל-Prometheus: מאפשר לכם לעקוב אחרי עומסי העבודה ולקבל התראות לגביהם באמצעות Prometheus, בלי שתצטרכו לנהל ולהפעיל את Prometheus באופן ידני בהיקף גדול.
חבילות של מדדי ניראות:
- מדדים של מישור הבקרה: מדדים שמיוצאים מרכיבים מסוימים של מישור הבקרה, כמו שרת ה-API והמתזמן.
מדדי מצב של Kube: קבוצה נבחרת של מדדים שמיוצאים מהשירות kube state, ומשמשים למעקב אחרי המצב של אובייקטים ב-Kubernetes כמו Pods, Deployments ועוד. במאמר שימוש במדדי מצב של kube מפורטים המדדים הכלולים.
חבילת kube state היא פתרון מנוהל. אם אתם צריכים גמישות רבה יותר – לדוגמה, אם אתם צריכים לאסוף מדדים נוספים, או לנהל את מרווחי הגירוד או לגרד משאבים אחרים – אתם יכולים להשבית את החבילה, אם היא מופעלת, ולפרוס מכונה משלכם של שירות המדדים של מצב kube בקוד פתוח. מידע נוסף זמין במסמכי התיעוד של השירות המנוהל של Google Cloud ל-Prometheus בנושא מדדי מצב של Kube.
cAdvisor/Kubelet: קבוצה נבחרת של מדדי cAdvisor ו-
kubelet. במאמר בנושא שימוש במדדי cAdvisor/Kubelet מפורטים המדדים שכלולים.חבילת cAdvisor/Kubelet היא פתרון מנוהל. אם אתם צריכים גמישות רבה יותר – למשל, אם אתם צריכים לאסוף מדדים נוספים, לנהל מרווחי גירוד או לגרד משאבים אחרים – אתם יכולים להשבית את החבילה, אם היא מופעלת, ולפרוס מופע משלכם של שירותי המדדים cAdvisor/Kubelet בקוד פתוח.
מדדים של NVIDIA Data Center GPU Manager (DCGM): מדדים מ-DCGM שמספקים תצוגה מקיפה של תקינות ה-GPU, הביצועים והניצול.
מדדי Kubernetes: מדדים גולמיים בפורמט Prometheus שמופקים מרכיבי Kubernetes וזמינים בנקודות הקצה
/metricsשל הרכיבים האלה. חבילות המדדים שנאספו עבור GKE הן קבוצת משנה של המדדים האלה. אתם יכולים להגדיר את השירות המנוהל של Google Cloud ל-Prometheus כך שיקבל את המדדים האלה באמצעות משאבים מותאמים אישית כמו PodMonitoring ו-ClusterNodeMonitoring. מידע נוסף זמין במאמר איסוף מדדים ספציפיים של Prometheus מ-Kubernetes.
אפשר גם להגדיר מעקב אוטומטי אחרי אפליקציות לעומסי עבודה מסוימים.
מדדי מערכת
כשיוצרים אשכול, מערכת GKE אוספת כברירת מחדל מדדים מסוימים שמופקים מרכיבי המערכת.
אתם יכולים לבחור אם לשלוח מדדים מאשכול GKE אל Cloud Monitoring. אם בוחרים לשלוח מדדים ל-Cloud Monitoring, צריך לשלוח מדדי מערכת.
כל מדדי המערכת של GKE מוזנים ל-Cloud Monitoring עם הקידומת kubernetes.io.
תמחור
ב-Cloud Monitoring לא גובים תשלום על הטמעת מדדי המערכת של GKE. למידע נוסף, ראו התמחור של Cloud Monitoring.
הגדרת איסוף של מדדים מהמערכת
כדי להפעיל את איסוף מדדי המערכת, מעבירים את הערך SYSTEM לדגל --monitoring של הפקודות gcloud container clusters create או gcloud container clusters update.
כדי להשבית את איסוף מדדי המערכת, משתמשים בערך NONE עבור הדגל --monitoring. אם השבתתם את איסוף מדדי המערכת, לא תוכלו לראות מידע בסיסי כמו שימוש במעבד, שימוש בזיכרון ושימוש בדיסק באשכול כשאתם צופים במדדי יכולת הצפייה.
באשכולות GKE Autopilot, אי אפשר להשבית את האיסוף של מדדי המערכת.
פרטים נוספים על השילוב של Cloud Monitoring עם GKE זמינים במאמר יכולות ניהול נתונים (Observability) ב-GKE.
כדי להגדיר את איסוף מדדי המערכת באמצעות Terraform, אפשר לעיין בבלוק monitoring_config ב
מאגר Terraform עבור google_container_cluster.
מידע כללי על שימוש ב- Google Cloud עם Terraform זמין במאמר Terraform עם Google Cloud.
רשימת מדדים של המערכת
מדדי מערכת כוללים מדדים מרכיבי מערכת חיוניים שחשובים ל-Kubernetes. רשימת המדדים האלה מופיעה במאמר מדדי מערכת של GKE.
אם מפעילים את Cloud Monitoring באשכול, אי אפשר להשבית את ניטור המערכת (--monitoring=SYSTEM).
פתרון בעיות במדדים של המערכת
אם מדדי המערכת לא זמינים ב-Cloud Monitoring כמו שציפיתם, כדאי לעיין במאמר בנושא פתרון בעיות שקשורות למדדי מערכת.
חבילה: מדדים של מישור הבקרה
אתם יכולים להגדיר אשכול GKE כך שישלח ל-Cloud Monitoring מדדים מסוימים שנוצרו על ידי שרת ה-API, Scheduler ו-Controller Manager של Kubernetes.
מידע נוסף זמין במאמר בנושא איסוף מדדים של מישור הבקרה והצגתם.
חבילה: Kube state metrics
אתם יכולים להגדיר אשכול GKE כך שישלח ל-Cloud Monitoring קבוצה נבחרת של מדדי מצב של kube בפורמט Prometheus. חבילת המדדים של kube state כוללת מדדים של Pods, Deployments, StatefulSets, DaemonSets, HorizontalPodAutoscaler resources, Persistent Volumes, Persistent Volume Claims ו-JobSets.
מידע נוסף זמין במאמר איסוף וצפייה במדדים של מצב Kube.
חבילה: מדדים של cAdvisor/Kubelet
אתם יכולים להגדיר אשכול GKE כך שישלח ל-Cloud Monitoring קבוצה נבחרת של מדדי cAdvisor/Kubelet בפורמט Prometheus. קבוצת המדדים שנבחרה היא קבוצת משנה של קבוצת המדדים הגדולה של cAdvisor/Kubelet, שמוגדרת כברירת מחדל בכל פריסה של Kubernetes. ה-cAdvisor/Kubelet שנבחר נועד לספק את המדדים הכי שימושיים, להפחית את נפח הטמעת הנתונים ואת העלויות שקשורות אליה.
מידע נוסף זמין במאמר איך אוספים וצופים במדדים של cAdvisor/Kubelet.
חבילה: מדדים של NVIDIA Data Center GPU Manager (DCGM)
אתם יכולים לעקוב אחרי השימוש ב-GPU, הביצועים והתקינות שלו על ידי הגדרת GKE לשליחת מדדים של NVIDIA Data Center GPU Manager (DCGM) אל Cloud Monitoring.
מידע נוסף זמין במאמר איסוף והצגה של מדדי NVIDIA Data Center GPU Manager (DCGM).
השבתת חבילות מדדים
אפשר להשבית את השימוש בחבילות מדדים באשכול. יכול להיות שתרצו להשבית חבילות מסוימות כדי להפחית עלויות, או אם אתם משתמשים במנגנון חלופי לאיסוף המדדים, כמו שירות מנוהל של Google Cloud ל-Prometheus ו-exporter.
המסוף
כדי להשבית את איסוף המדדים מהכרטיסייה Details של האשכול:
-
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
אם אתם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בחרו בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם האשכול.
בשורה Features שנקראת Cloud Monitoring, לוחצים על סמל העריכה Edit.
בתפריט הנפתח רכיבים, מבטלים את הסימון של רכיבי המדדים שרוצים להשבית.
לוחצים על OK.
לוחצים על שמירת השינויים.
gcloud
פותחים חלון טרמינל שמותקנים בו Google Cloud SDK ו-Google Cloud CLI. אחת הדרכים לעשות זאת היא באמצעות Cloud Shell.
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מפעילים את הפקודה
gcloud container clusters updateומעבירים קבוצה מעודכנת של ערכים לסימן--monitoring. הערכים שמועברים לדגל--monitoringמחליפים את כל ההגדרות הקודמות.לדוגמה, כדי להשבית את איסוף כל המדדים מלבד מדדי המערכת, מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --enable-managed-prometheus \ --monitoring=SYSTEMהפקודה הזו משביתה את האיסוף של כל חבילות המדדים שהוגדרו בעבר.
Terraform
כדי להגדיר את איסוף המדדים באמצעות Terraform, עיינו בבלוק monitoring_config ב
מרשם של Terraform ל-google_container_cluster.
מידע כללי על שימוש ב- Google Cloud עם Terraform זמין במאמר Terraform עם Google Cloud.
הסבר על החיוב ב-Monitoring
אפשר להשתמש ב-Cloud Monitoring כדי לזהות את מישור הבקרה או את מדדי מצב ה-kube שכותבים את המספרים הגדולים ביותר של דגימות. אלה המדדים שהכי משפיעים על העלויות. אחרי שמזהים את המדדים הכי יקרים, אפשר לשנות את הגדרות הגירוד כדי לסנן את המדדים האלה בצורה מתאימה.
בדף Metrics Management ב-Cloud Monitoring יש מידע שיכול לעזור לכם לשלוט בסכום שאתם מוציאים על מדדים שניתנים לחיוב, בלי לפגוע ביכולת הצפייה. בדף ניהול מדדים מופיע המידע הבא:
- נפחי ההטמעה לחיוב מבוסס-בייט ולחיוב מבוסס-דגימה, בכל דומיין של מדד ובמדדים נפרדים.
- נתונים על תוויות ועוצמה (cardinality) של מדדים.
- מספר הקריאות לכל מדד.
- שימוש במדדים במדיניות התראות ובמרכזי בקרה בהתאמה אישית.
- שיעור השגיאות בכתיבת מדדים.
אפשר גם להשתמש בדף ניהול מדדים כדי להחריג מדדים לא נחוצים, וכך לחסוך בעלויות של העיבוד שלהם.
כדי להציג את הדף ניהול מדדים:
-
נכנסים לדף Metrics management במסוף Google Cloud :
אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
- בסרגל הכלים, בוחרים את חלון הזמן. כברירת מחדל, בדף Metrics Management מוצג מידע על המדדים שנאספו ביום הקודם.
מידע נוסף על הדף Metrics Management זמין במאמר הצגה וניהול של השימוש במדדים.
כדי לזהות אילו מדדים של מישור הבקרה או של מצב kube כוללים את המספר הגדול ביותר של דגימות שנבלעות, מבצעים את הפעולות הבאות:
-
נכנסים לדף Metrics management במסוף Google Cloud :
אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
בכרטיס המידע Billable samples ingested (דגימות שחויבו על צריכתן), לוחצים על View charts (הצגת תרשימים).
מאתרים את התרשים Namespace Volume Ingestion ולוחצים על more_vert More chart options (אפשרויות נוספות של התרשים).
בשדה Metric, מוודאים שהמשאב והמדד הבאים נבחרו:
Metric Ingestion Attributionו-Samples written by attribution id.בדף Filters, מבצעים את הפעולות הבאות:
בשדה Label, מוודאים שהערך הוא
attribution_dimension.בשדה השוואה, מוודאים שהערך הוא
= (equals).בשדה Value, בוחרים באפשרות
cluster.
מבטלים את ההגדרה קיבוץ לפי.
אפשר גם לסנן כדי להציג רק מדדים מסוימים. לדוגמה, כל המדדים של שרת ה-API של מישור הבקרה כוללים את המחרוזת apiserver כחלק משם המדד, וכל המדדים של kube state Pod כוללים את המחרוזת kube_pod כחלק משם המדד. לכן, אפשר לסנן את המדדים שמכילים את המחרוזות האלה:
לוחצים על הוספת מסנן.
בשדה Label (תווית), בוחרים באפשרות
metric_type.בשדה Comparison, בוחרים באפשרות
=~ (equals regex).בשדה ערך, מזינים
.*apiserver.*או.*kube_pod.*.
אפשר לקבץ את מספר הדגימות שהמערכת מעכלת לפי אזור GKE או פרויקט:
לוחצים על Group by (קיבוץ לפי).
מוודאים שהאפשרות metric_type נבחרה.
כדי לקבץ לפי אזור GKE, בוחרים באפשרות מיקום.
כדי לקבץ לפי פרויקט, בוחרים באפשרות project_id.
לוחצים על OK.
אופציונלית, אפשר לקבץ את מספר הדגימות שהמערכת קולטת לפי שם אשכול GKE:
לוחצים על Group by (קיבוץ לפי).
כדי לקבץ לפי שם אשכול GKE, מוודאים שגם attribution_dimension וגם attribution_id מסומנים.
לוחצים על OK.
כדי לראות את נפח ההטמעה של כל אחד מהמדדים, במתג עם התווית Chart Table Both, בוחרים באפשרות Both. בטבלה מוצג נפח הנתונים שהועברו לכל מדד בעמודה ערך.
לוחצים פעמיים על כותרת העמודה ערך כדי למיין את המדדים לפי נפח נתונים בסדר יורד.
בשלבים האלה מוצגים המדדים עם שיעור הדגימות הגבוה ביותר שנקלטו ב-Cloud Monitoring. החיוב על המדדים בחבילות הניטור מתבצע לפי מספר הדגימות שנקלטו, ולכן חשוב לשים לב למדדים עם שיעור הקליטה הגבוה ביותר של דגימות.
מדדים אחרים
בנוסף למדדי המערכת ולחבילות המדדים שמתוארות במסמך הזה, גם מדדי Istio זמינים לאשכולות GKE. למידע על מחירים, ראו התמחור של Cloud Monitoring.
מדדים זמינים
בטבלה הבאה מפורטים הערכים הנתמכים של האפשרות --monitoring לפקודות create ו-update.
| מקור | ערך של --monitoring |
המדדים שנאספים |
|---|---|---|
| ללא | NONE |
לא נשלחים מדדים ל-Cloud Monitoring; לא מותקן באשכול סוכן לאיסוף מדדים. הערך הזה לא נתמך באשכולות של טייס אוטומטי. |
| מערכת | SYSTEM |
מדדים מרכיבי מערכת חיוניים שנדרשים ל-Kubernetes. רשימה מלאה של המדדים זמינה במאמר בנושא מדדי Kubernetes. |
| שרת API | API_SERVER |
מדדים מ-kube-apiserver
רשימה מלאה של המדדים מופיעה במאמר
מדדים של שרת API. |
| Scheduler | SCHEDULER |
מדדים מ-kube-scheduler
רשימה מלאה של המדדים זמינה במאמר
מדדי מתזמן.
|
| Controller Manager | CONTROLLER_MANAGER |
מדדים מ-kube-controller-manager
לרשימה המלאה של המדדים, ראו
מדדי Controller Manager. |
| נפח אחסון קבוע (Storage) | STORAGE |
מדדי אחסון מ-kube-state-metrics.
כולל מדדים של Persistent Volume ו-Persistent Volume Claims.
לרשימה המלאה של המדדים, ראו
מדדי אחסון.
|
| Pod | POD |
מדדי ה-Pod מ-kube-state-metrics.
רשימה מלאה של המדדים זמינה במאמר בנושא
מדדי Pod.
|
| פריסה | DEPLOYMENT |
מדדי פריסה מ-kube-state-metrics.
רשימה מלאה של המדדים מופיעה במאמר
מדדי פריסה.
|
| StatefulSet | STATEFULSET |
מדדים של StatefulSet מ-kube-state-metrics.
לרשימה המלאה של המדדים, ראו
מדדי StatefulSet. |
| DaemonSet | DAEMONSET |
מדדים של DaemonSet מ-kube-state-metrics.
רשימה מלאה של המדדים מופיעה במאמר בנושא
מדדים של DaemonSet.
|
| HorizontalPodAutoscaler | HPA |
מדדי HPA מ-kube-state-metrics.
רשימה מלאה של מדדי HorizontalPodAutoscaler
|
| JobSet | JOBSET |
מדדים של JobSet מ-kube-state-metrics.
רשימה מלאה של מדדי JobSet
|
| cAdvisor | CADVISOR |
מדדי cAdvisor מחבילת המדדים cAdvisor/Kubelet. רשימה מלאה של המדדים מופיעה במאמר בנושא מדדי cAdvisor. |
kubelet |
KUBELET |
מדדי kubelet מ-cAdvisor/Kubelet
רשימה מלאה של המדדים זמינה במאמר בנושא מדדי kubelet.
|
| מדדים של NVIDIA Data Center GPU Manager (DCGM) | DCGM |
מדדים מ-NVIDIA Data Center GPU Manager (DCGM). |
אפשר גם לאסוף מדדים בסגנון Prometheus שנחשפים על ידי עומסי עבודה של GKE באמצעות השירות המנוהל של Google Cloud ל-Prometheus. השירות הזה מאפשר לכם לעקוב אחרי עומסי העבודה ולקבל התראות לגביהם באמצעות Prometheus, בלי שתצטרכו לנהל ולהפעיל את Prometheus באופן ידני בהיקף גדול.
המאמרים הבאים
- איך לפתור בעיות שקשורות למדדי מערכת
- איך אוספים ומציגים מדדים של מצב kube
- איך רואים את מדדי יכולת התצפית
- איך אוספים ומציגים מדדים של מישור הבקרה