במאמר הזה מוסבר איך להגדיר את Google Kubernetes Engine (GKE) כדי לשלוח מדדים אל Cloud Monitoring. אפשר להשתמש במדדים ב-Cloud Monitoring כדי לאכלס לוחות בקרה בהתאמה אישית, ליצור התראות, ליצור יעדים ברמת השירות או לאחזר אותם באמצעות Cloud Monitoring API בשירותי מעקב של צד שלישי.
GKE מספק כמה מקורות של מדדים:
- מדדי מערכת: מדדים מרכיבי מערכת חיוניים, שמתארים משאבים ברמה נמוכה כמו מעבד (CPU), זיכרון ואחסון.
- השירות המנוהל של Google Cloud ל-Prometheus: מאפשר לכם לעקוב אחרי עומסי העבודה שלכם ולשלוח התראות לגביהם באמצעות Prometheus, בלי שתצטרכו לנהל ולהפעיל את Prometheus באופן ידני בהיקף גדול.
חבילות של מדדי ניראות:
- מדדים של מישור הבקרה: מדדים שמיוצאים מרכיבים מסוימים של מישור הבקרה, כמו שרת ה-API והמתזמן.
Kube state metrics: קבוצה שנבחרה בקפידה של מדדים שמיוצאים משירות 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, הביצועים והניצול.
אפשר גם להגדיר מעקב אוטומטי אחרי אפליקציות עבור עומסי עבודה מסוימים.
מדדי מערכת
כשיוצרים אשכול, מערכת 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 ב
google_container_cluster במאגר Terraform.
מידע כללי על שימוש ב- Google Cloud עם Terraform זמין במאמר Terraform עם Google Cloud.
רשימת מדדים של המערכת
מדדי מערכת כוללים מדדים מרכיבי מערכת חיוניים שחשובים ל-Kubernetes. רשימת המדדים האלה מופיעה במאמר מדדי מערכת של GKE.
אם מפעילים את Cloud Monitoring באשכול, אי אפשר להשבית את ניטור המערכת (--monitoring=SYSTEM).
פתרון בעיות במדדים של המערכת
אם מדדי המערכת לא זמינים ב-Cloud Monitoring כמו שציפיתם, כדאי לעיין במאמר בנושא פתרון בעיות שקשורות למדדי מערכת.
חבילה: מדדים של מישור הבקרה
אפשר להגדיר אשכול GKE כך שישלח ל-Cloud Monitoring מדדים מסוימים שמופקים על ידי שרת ה-API של Kubernetes, מתזמן וממנהל הבקרה.
איך אוספים ומציגים מדדים של מישור הבקרה
חבילה: Kube state metrics
אתם יכולים להגדיר אשכול GKE לשליחה של קבוצה נבחרת של מדדי מצב kube בפורמט Prometheus אל Cloud Monitoring. חבילת המדדים של 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.
המסוף
כדי להשבית את איסוף המדדים מהכרטיסייה פרטים באשכול:
-
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם האשכול.
בשורה Features עם התווית Cloud Monitoring, לוחצים על סמל Edit.
בתפריט הנפתח רכיבים, מבטלים את הסימון של רכיבי המדד שרוצים להשבית.
לוחצים על OK.
לוחצים על שמירת השינויים.
gcloud
פותחים חלון טרמינל עם Google Cloud SDK ו-Google Cloud CLI מותקנים. אחת הדרכים לעשות את זה היא באמצעות Cloud Shell.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
מפעילים את הפקודה
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 יש מידע שיכול לעזור לכם לשלוט בסכום שאתם מוציאים על מדדים שניתנים לחיוב, בלי לפגוע ביכולת הצפייה. בדף Metrics Management מופיע המידע הבא:
- נפחי ההטמעה לחיוב על בסיס בייט ועל בסיס דגימה, בדומיינים של מדדים ובמדדים נפרדים.
- נתונים על תוויות ועוצמה של מדדים.
- מספר הקריאות לכל מדד.
- שימוש במדדים במדיניות התראות ובמרכזי בקרה בהתאמה אישית.
- שיעור השגיאות בכתיבת מדדים.
אפשר גם להשתמש בדף ניהול מדדים כדי להחריג מדדים לא נחוצים, וכך לבטל את העלות של ההטמעה שלהם.
כדי להציג את הדף ניהול מדדים:
-
נכנסים לדף Metrics management במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
- בסרגל הכלים, בוחרים את חלון הזמן. כברירת מחדל, בדף ניהול מדדים מוצג מידע על המדדים שנאספו ביום הקודם.
מידע נוסף על הדף ניהול מדדים זמין במאמר איך רואים ומנהלים את השימוש במדדים.
כדי לזהות אילו מדדים של מישור הבקרה או של מצב kube כוללים את המספר הגדול ביותר של דגימות שנבלעות, מבצעים את הפעולות הבאות:
-
נכנסים לדף Metrics management במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
בכרטיס המידע דוגמאות שחויבו על הטמעה, לוחצים על הצגת תרשימים.
מחפשים את התרשים Namespace Volume Ingestion ולוחצים על more_vert More chart options (אפשרויות נוספות לתרשים).
בשדה Metric, מוודאים שסוג המשאב והמדד הבאים נבחרו:
Metric Ingestion Attributionו-Samples written by attribution id.בדף Filters, מבצעים את הפעולות הבאות:
בשדה Label, מוודאים שהערך הוא
attribution_dimension.בשדה השוואה, מוודאים שהערך הוא
= (equals).בשדה ערך, בוחרים באפשרות
cluster.
מבטלים את ההגדרה קיבוץ לפי.
אפשר גם לסנן רק מדדים מסוימים. לדוגמה, כל המדדים של שרת ה-API של מישור הבקרה כוללים את המחרוזת apiserver כחלק משם המדד, וכל המדדים של kube state Pod כוללים את המחרוזת kube_pod כחלק משם המדד. לכן, אפשר לסנן את המדדים שמכילים את המחרוזות האלה:
לוחצים על הוספת מסנן.
בשדה Label, בוחרים באפשרות
metric_type.בשדה השוואה, בוחרים באפשרות
=~ (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. בעמודה Value בטבלה מוצג נפח הנתונים שהועברו לכל מדד.
לוחצים פעמיים על כותרת העמודה ערך כדי למיין את המדדים לפי נפח נתונים יורד.
בשלבים האלה מוצגים המדדים עם שיעור הדגימות הגבוה ביותר שנקלטו ב-Cloud Monitoring. החיוב על המדדים בחבילות הניטור מתבצע לפי מספר הדגימות שנקלטו, ולכן חשוב לשים לב למדדים עם שיעור הקליטה הגבוה ביותר של דגימות.
מדדים אחרים
בנוסף למדדי המערכת וחבילות המדדים שמתוארים במסמך הזה, מדדי Istio זמינים גם עבור אשכולות GKE. למידע על מחירים, אפשר לעיין במחירון של Cloud Monitoring.
מדדים זמינים
בטבלה הבאה מפורטים הערכים הנתמכים של האפשרות --monitoring לפקודות create ו-update.
| מקור | ערך של --monitoring |
מדדים שנאספים |
|---|---|---|
| ללא | NONE |
לא נשלחו מדדים ל-Cloud Monitoring, ולא הותקן באשכול סוכן לאיסוף מדדים. הערך הזה לא נתמך באשכולות של Autopilot. |
| מערכת | SYSTEM |
מדדים מרכיבי מערכת חיוניים שנדרשים ל-Kubernetes. לרשימה מלאה של המדדים |
| שרת API | API_SERVER |
מדדים מ-kube-apiserver.
רשימה מלאה של המדדים מופיעה במאמר
מדדים של שרת API. |
| מתזמן | SCHEDULER |
מדדים מ-kube-scheduler.
רשימה מלאה של המדדים זמינה במאמר בנושא
מדדים של כלי התזמון.
|
| Controller Manager | CONTROLLER_MANAGER |
מדדים מ-kube-controller-manager.
רשימה מלאה של המדדים מופיעה במאמר
מדדים של Controller Manager. |
| נפח אחסון מתמיד (Persistent Volume) | STORAGE |
מדדי אחסון מ-kube-state-metrics.
כולל מדדים של נפח אחסון מתמיד ודרישות נפח אחסון מתמיד.
רשימה מלאה של המדדים מופיעה במאמר בנושא
מדדי אחסון.
|
| Pod | POD |
מדדי פודים מ-kube-state-metrics.
רשימה מלאה של המדדים זמינה במאמר בנושא
מדדי Pod.
|
| Deployment | DEPLOYMENT |
מדדי פריסה מ-kube-state-metrics.
רשימה מלאה של המדדים מופיעה במאמר בנושא
מדדי פריסה.
|
| StatefulSet | STATEFULSET |
מדדים של StatefulSet מ-kube-state-metrics.
רשימה מלאה של המדדים זמינה במאמר
StatefulSet metrics. |
| DaemonSet | DAEMONSET |
מדדים של DaemonSet מ-kube-state-metrics.
רשימה מלאה של המדדים מופיעה במאמר בנושא
מדדים של DaemonSet.
|
| HorizonalPodAutoscaler | HPA |
מדדי HPA מ-kube-state-metrics.
רשימה מלאה של מדדים של HorizonalPodAutoscaler
|
| 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
- איך רואים את מדדי יכולת התצפית
- איך אוספים ומציגים מדדים של מישור הבקרה