בדף הזה מוסבר איך להגדיר אשכול Google Kubernetes Engine (GKE) כדי לשלוח קבוצה נבחרת של מצבי kube, כולל מדדים של Pod ופריסות, ל-Cloud Monitoring באמצעות השירות המנוהל של Google Cloud ל-Prometheus. בנוסף, בדף הזה מוסבר איך המדדים האלה מעוצבים כשהם נכתבים ב-Monitoring, ואיך לשלוח שאילתות לגבי מדדים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
דרישות
כדי לאסוף מדדי מצב של kube, אשכול GKE צריך לעמוד בדרישות הבאות:
- האשכול צריך להריץ את הגרסאות הבאות, בהתאם למדד שרוצים להפעיל:
- כדי להפעיל את חבילת המדדים JobSet, באשכול צריך לפעול 1.32.1-gke.1357001 ואילך. החל מגרסה 1.32.1-gke.1357001, חבילת המדדים של JobSet מופעלת כברירת מחדל באשכולות חדשים של GKE Standard ו-Autopilot.
- המדד
kube_jobset_restartsזמין באשכולים בגרסה 1.32 החל מגרסה 1.32.4-gke.1767000, ובאשכולים בגרסה 1.33 החל מגרסה 1.33.0-gke.1868000. - כדי להפעיל חבילות מדדים אחרות שמתוארות בדף הזה, האשכול צריך להריץ GKE 1.27.2-gke.1200 ואילך. החל מגרסה 1.29.2-gke.2000 באשכולות GKE Standard ומגרסה 1.27.4-gke.900 באשכולות GKE Autopilot, חבילת המדדים של מצב Kube מופעלת כברירת מחדל.
- צריך להפעיל את מדדי המערכת באשכול.
- צריך להפעיל באשכול את האיסוף המנוהל של השירות המנוהל של Google Cloud ל-Prometheus. האיסוף המנוהל של השירות המנוהל של Google Cloud ל-Prometheus מופעל כברירת מחדל באשכולות חדשים.
הגדרת האיסוף של מדדי מצב kube
אפשר להפעיל את Kube State Metrics באמצעות ה Google Cloud מסוף, ה-CLI של gcloud או Terraform:
המסוף
אפשר להפעיל את המדדים של מצב ה-kube מהכרטיסייה Observability עבור אשכול או פריסה באשכול. אתם יכולים גם לראות תצוגה מקדימה של התרשימים והמדדים הזמינים לפני שאתם מפעילים את חבילת המדדים.
בכרטיסייה Observability (יכולת צפייה) של אשכול, אפשר לסנן את קבוצת התרשימים של מדדי מצב kube לפי שני הפריטים הבאים:
- מצב עומסי העבודה: כולל את המדדים של משאבי Pods, Deployments, StatefulSets, DaemonSets ו-HorizontalPodAutoscaler.
- Storage > Persistent: כולל את המדדים של Persistent Volumes ו-Persistent Volume Claims.
אפשר להפעיל את אחת מקבוצות המדדים או את שתיהן.
כדי להפעיל את kube state metrics מהכרטיסייה Observability (יכולת צפייה) עבור אשכול, מבצעים את הפעולות הבאות:
-
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
אם אתם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בחרו בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם האשכול ואז על הכרטיסייה Observability.
ברשימת התכונות, בוחרים באפשרות Workloads State או באפשרות Storage > Persistent.
לוחצים על הפעלת החבילה.
אם חבילת kube state metrics כבר מופעלת, יוצגו במקומה כמה תרשימים של kube state metrics.
כדי להפעיל את המדדים של מצב ה-kube מהכרטיסייה Observability עבור פריסה:
-
נכנסים לדף Workloads במסוף Google Cloud :
אם אתם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בחרו בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם הפריסה ואז על הכרטיסייה יכולת צפייה.
בוחרים באפשרות Kube State מתוך רשימת התכונות.
לוחצים על הפעלת החבילה. החבילה מופעלת בכל האשכול.
אם חבילת המדדים של מצב kube כבר מופעלת, מוצגים לכם קבוצה של תרשימים של מדדים מ-Pods, מ-Deployments ומ-Horizontal Pod Autoscalers.
כדי להגדיר את kube state metrics מהכרטיסייה Details (פרטים) של האשכול:
-
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם האשכול.
בשורה Features עם התווית Cloud Monitoring, לוחצים על סמל העריכה.
בתיבת הדו-שיח Edit Cloud Monitoring שמופיעה, מוודאים שהאפשרות Enable Cloud Monitoring מסומנת.
בתפריט הנפתח Components, בוחרים את רכיבי kube state שמהם רוצים לאסוף מדדים.
לוחצים על OK.
לוחצים על שמירת השינויים.
gcloud
כדי לאסוף מדדים, צריך לעדכן את האשכול:
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--enable-managed-prometheus \
--monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול הקיים. COMPUTE_LOCATION: המיקום ב-Compute Engine של האשכול.
הערכים שמועברים לדגל monitoring מחליפים כל הגדרה קודמת.
Terraform
כדי להגדיר את האיסוף של מדדי המצב של Kube באמצעות Terraform, עיינו בבלוק monitoring_config ב
מרשם של Terraform ל-google_container_cluster.
מידע כללי על השימוש ב- Google Cloud עם Terraform מופיע במאמר Terraform עם Google Cloud.
מכסה
המדדים של Kube State צורכים את המכסה בקשות הטמעת סדרת זמנים לדקה של Cloud Monitoring API. לפני שמפעילים את kube state metrics, צריך לבדוק את השימוש המקסימלי האחרון במכסה הזו. אם יש לכם הרבה אשכולות באותו פרויקט או שאתם כבר מתקרבים למגבלת המכסה, אתם יכולים לבקש להגדיל את מגבלת המכסה לפני שתפעילו את אחת מחבילות הניטור.
תמחור
מדדי המצב של Kube משתמשים בשירות המנוהל של Google Cloud ל-Prometheus כדי לטעון מדדים ל-Cloud Monitoring. החיובים ב-Cloud Monitoring על הטמעת המדדים האלה מבוססים על מספר הדגימות שהוטמעו.
למידע נוסף, ראו התמחור של Cloud Monitoring.
פורמט המדד
כל המדדים של מצב ה-kube ב-Kubernetes שנכתבים ב-Cloud Monitoring משתמשים בסוג המשאב
prometheus_target.
לכל שם של מדד יש קידומת prometheus.googleapis.com/ וסיומת שמציינת את סוג המדד של Prometheus, כמו /gauge, /histogram או /counter. אחרת, כל שם של מדד זהה לשם המדד שמוצג על ידי Kubernetes בקוד פתוח.
ייצוא מ-Cloud Monitoring
אפשר לייצא את מדדי מצב ה-kube מ-Cloud Monitoring באמצעות Cloud Monitoring API. כל המדדים של מצב ה-kube נקלטים באמצעות השירות המנוהל של Google Cloud ל-Prometheus, ולכן אפשר לשלוח שאילתות למדדים של מצב ה-kube באמצעות שפת השאילתות של Prometheus (PromQL). אפשר גם לשלוח שאילתות לגביהם באמצעות שפת שאילתת מעקב (MQL).
שאילתות על מדדים
כששולחים שאילתות על מדדי מצב של kube, השם שבו משתמשים תלוי אם משתמשים ב-PromQL או בתכונות שמבוססות על Cloud Monitoring, כמו MQL או Metrics Explorer .
בטבלאות הבאות של מדדי מצב של kube מוצגות שתי גרסאות של כל שם מדד:
- PromQL metric name: כשמשתמשים ב-PromQL בדפי Cloud Monitoring במסוף Google Cloud או בשדות PromQL של Cloud Monitoring API, משתמשים בשם המדד של PromQL.
- שם המדד ב-Cloud Monitoring כשמשתמשים בתכונות אחרות של Cloud Monitoring, צריך להשתמש בשם המדד ב-Cloud Monitoring שמופיע בטבלאות שבהמשך. לפני השם הזה צריך להוסיף את הקידומת
prometheus.googleapis.com/, שלא מופיעה ברשומות שבטבלה.
מדדי אחסון
לשמות המדדים של Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהרשומות בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_persistentvolume_capacity_byteskube_persistentvolume_capacity_bytes/gauge
|
|
GAUGE, DOUBLE, By
prometheus_target 1.27.2-gke.1200 |
קיבולת של Persistentvolume בבייטים.
נדגמים כל 30 שניות.persistentvolume: persistentvolume.
|
kube_persistentvolume_claim_refkube_persistentvolume_claim_ref/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מידע על הפניה ל-Persistent Volume Claim.
נדגם כל 30 שניות.claim_name: claim_name.
name: שם.
persistentvolume: persistentvolume.
|
kube_persistentvolume_infokube_persistentvolume_info/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מידע על persistentvolume.
נדגמים כל 30 שניות.csi_driver: csi_driver.
csi_volume_handle: csi_volume_handle.
local_fs: local_fs.
local_path: local_path.
persistentvolume: persistentvolume.
storageclass: storageclass.
|
kube_persistentvolume_status_phasekube_persistentvolume_status_phase/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
השלב מציין אם נפח זמין, קשור לתלונה או שוחרר על ידי תלונה.
נדגמים כל 30 שניות.persistentvolume: persistentvolume.
phase: שלב.
|
kube_persistentvolumeclaim_infokube_persistentvolumeclaim_info/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מידע על הצהרה על נפח אחסון מתמיד.
נדגמים כל 30 שניות.persistentvolumeclaim: persistentvolumeclaim.
storageclass: storageclass.
volumename: volumename.
|
kube_persistentvolumeclaim_resource_requests_storage_byteskube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
|
|
GAUGE, DOUBLE, By
prometheus_target 1.27.2-gke.1200 |
הקיבולת של נפח האחסון שנדרש על ידי ההצהרה על נפח אחסון מתמיד.
נדגם כל 30 שניות.persistentvolumeclaim: persistentvolumeclaim.
|
kube_persistentvolumeclaim_status_phasekube_persistentvolumeclaim_status_phase/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
השלב שבו נמצאת כרגע התביעה ל-PersistentVolume.
נדגמים כל 30 שניות.persistentvolumeclaim: persistentvolumeclaim.
phase: שלב.
|
למידע נוסף, ראו מדדי PersistentVolume ומדדי PersistentVolumeClaim.
מדדים של Pod
Pod הוא קבוצה של קונטיינרים אחד או יותר עם מפרט לגבי אופן ההפעלה של הקונטיינרים, שמשתפים משאבי אחסון ורשת.
טבלת מדדים של Pod
מדדי ה-Pod מאפשרים לכם לעקוב אחרי ההתנהגות של ה-Pods ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילת המדדים של מצב ה-kube.
לשמות של מדדי Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהרשומות בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_pod_container_status_readykube_pod_container_status_ready/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מציין אם בדיקת המוכנות של הקונטיינרים הצליחה.
נדגמים כל 30 שניות.container: מאגר.
pod: צוות.
uid: uid.
|
kube_pod_container_status_waiting_reasonkube_pod_status_container_status_waiting_reason/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
הסיבה לכך שהמאגר נמצא כרגע במצב המתנה.
נדגמים כל 30 שניות.container: container.
pod: צוות.
reason: סיבה.
uid: uid.
|
kube_pod_status_phasekube_pod_status_phase/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
השלב הנוכחי של ה-Pod. נדגמים כל 30 שניות.phase: שלב.
pod: פוד.
uid: uid.
|
kube_pod_status_unschedulablekube_pod_status_unschedulable/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
תיאור הסטטוס "לא ניתן לתזמון" של ה-Pod.
נדגם כל 30 שניות.pod: פוד.
uid: uid.
|
מידע נוסף זמין במאמר מדדי Pod.
דוגמאות לשאילתות על מדדי Pod
כדי לקבוע אם יש לכם Pods שלא ניתן לתזמן, משתמשים בביטוי הבא של PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
כדי לקבל התראה על מספר ה-Pods שלא ניתן לתזמן במרחב שמות, אפשר להשתמש בביטוי PromQL הבא:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT
אפשר להשתמש במדד kube_pod_container_status_waiting_reason כדי ליצור התראה על מאגר תקוע במצב המתנה ספציפי באמצעות ביטוי PromQL כמו זה:
max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
הערך של REASON מציין את מצב ההמתנה של הקונטיינר, לדוגמה:
CrashLoopBackOffImagePullBackOffContainerCreating
כדי ליצור התראה על קונטיינר שנתקע באחד ממצבי ההמתנה, משתמשים בביטוי PromQL הבא:
max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
כדי לקבוע כמה קונטיינרים נכשלים בבדיקות המוכנות, משתמשים בביטוי PromQL הבא
sum(kube_pod_container_status_ready) by (pod, container) == 0
חלק מהשאילתות והביטויים של ההתראות בקטע הזה הותאמו מקובץ kubernetes-apps.yaml במאגר התרשימים של Prometheus community Kubernetes Helm ב-GitHub.
מדריכים אינטראקטיביים
המדדים של Kube State משמשים גם בפלייבוקים האינטראקטיביים של GKE לפתרון בעיות בפודים שלא ניתנים לתזמון או שנמצאים בלולאת קריסה. מידע נוסף על מצבי הכשל האלה זמין במאמרי פתרון הבעיות הבאים:
אם חבילת המדדים של מצב ה-kube לא מופעלת, הדרך העיקרית לזהות בעיות בתזמון של פודים היא לשלוח שאילתה לאירועי היומן 'תזמון נכשל'. אחרי שמפעילים את חבילת המדדים של מצב ה-kube, אפשר להשתמש במדד kube_pod_status_unschedulable, שמשרת את אותה מטרה אבל קל יותר לצבור אותו ולהציג אותו בתרשים. בעזרת המדד אפשר לראות כמה Pods לא ניתנים לתזמון ומתי הבעיה התחילה.
באופן דומה, מדד המערכת של GKE
kubernetes.io/container/restart_count
יכול לעזור לכם לזהות תרמילים (Pods) שנמצאים בלולאת קריסה. המדד kube_pod_container_status_waiting_reason גם סופר את ה-Pods שנמצאים בלולאת קריסה, ומאפשר לכם לקבוע אם ה-Pods תקועים במצבי המתנה אחרים חוץ מ-CrashLookBackOff, כמו ImagePullBackOff ו-ContainerCreating.
כדי לעיין בתוכניות הפעולה האינטראקטיביות:
-
במסוף Google Cloud , עוברים לדף Dashboards:
אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
- מסננים את רשימת מרכזי הבקרה בלחיצה על הקטגוריה GCP.
- לוחצים על השם של לוח הבקרה GKE Interactive Playbook ברשימה.
מדדי פריסה
פריסה היא בקר שמעדכן את מצב המשאבים, כמו Pods, כדי לנהל אירועים כמו השקות והשבתות.
טבלה של מדדי פריסה
מדדי הפריסה מאפשרים לעקוב אחרי התנהגות הבקר ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילת kube state metrics:
לשמות המדדים של Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהערכים בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_deployment_spec_replicaskube_deployment_spec_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הפודים הרצוי לפריסה. נדגמים כל 30 שניות.deployment: פריסה.
|
kube_deployment_status_replicas_availablekube_deployment_status_replicas_available/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הרפליקות הזמינות לכל פריסה. נדגמים כל 30 שניות.deployment: deployment.
|
kube_deployment_status_replicas_updatedkube_deployment_status_replicas_updated/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר העותקים המשוכפלים המעודכנים לכל פריסה. נדגמים כל 30 שניות.deployment: deployment.
|
מידע נוסף זמין במאמר בנושא מדדי פריסה.
דוגמאות לשאילתות לגבי מדדי פריסה
אפשר ליצור תרשימים ומדיניות התראות לפריסות ספציפיות על ידי סינון מדדי הפריסה לפי אשכול, מרחב שמות ושם הפריסה.
לדוגמה, כדי להשוות בין מספר הרפליקות הזמינות לבין מספר הרפליקות הצפוי בפריסה יחידה, אפשר להשתמש בשאילתות PromQL הבאות כדי לשרטט את שני המדדים בתרשים אחד:
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
כדי לקבל התראה על פריסה שנכשלה או נעצרה, אפשר להשתמש בביטוי הבא של PromQL:
(
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
>
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
) and (
changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m])
==
0
)
חלק מהשאילתות והביטויים של ההתראות בקטע הזה הותאמו מקובץ kubernetes-apps.yaml במאגר התרשימים של Prometheus community Kubernetes Helm ב-GitHub.
מדדים של StatefulSet
StatefulSet הוא בקר שמנהל את הפריסה וההתאמה לעומס (scaling) של קבוצת Pods לאפליקציות עם שמירת מצב. הבקר הזה מנהל את הסדר והייחודיות של Pods.
טבלה של מדדי StatefulSet
המדדים של StatefulSet מאפשרים לעקוב אחרי ההתנהגות של בקר המערכת ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילת kube state metrics:
לשמות המדדים של Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהערכים בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_statefulset_replicaskube_statefulset_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הפודים הרצוי עבור StatefulSet. נדגמים כל 30 שניות.statefulset: statefulset.
|
kube_statefulset_status_replicas_readykube_statefulset_status_replicas_ready/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הרפליקות המוכנות לכל StatefulSet. נדגמים כל 30 שניות.statefulset: statefulset.
|
kube_statefulset_status_replicas_updatedkube_statefulset_status_replicas_updated/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר העותקים המשוכפלים המעודכנים לכל StatefulSet. נדגמים כל 30 שניות.statefulset: statefulset.
|
מידע נוסף זמין במאמר בנושא מדדים של StatefulSet.
דוגמאות לשאילתות על מדדים של StatefulSet
אתם יכולים ליצור תרשימים ומדיניות התראות עבור StatefulSet ספציפיים על ידי סינון מדדי StatefulSet לפי אשכול, מרחב שמות ושם ה-StatefulSet.
לדוגמה, כדי להשוות בין מספר הרפליקות הזמינות לבין מספר הרפליקות הצפוי ב-StatefulSet יחיד, אפשר להשתמש בשאילתות PromQL הבאות כדי לשרטט את שני המדדים בתרשים אחד:
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
כדי לקבל התראה על פריסה שנכשלה או נעצרה של StatefulSet, אפשר להשתמש בביטוי הבא של PromQL:
(
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
>
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
) and (
changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m])
==
0
)
חלק מהביטויים של השאילתות וההתראות בקטע הזה הותאמו מהקובץ kubernetes-apps.yaml במאגר Prometheus community Kubernetes Helm Charts ב-GitHub.
מדדים של DaemonSet
DaemonSet הוא בקר שעוזר לוודא שקבוצה מסוימת של צמתים מריצה עותק של Pod. לדוגמה, כשמוסיפים צמתים לאשכול, ה-DaemonSet מוסיף פודים לצמתים. הבקר הזה עוזר לוודא שתהליכים מסוימים פועלים בכל צומת.
טבלה של מדדים של DaemonSet
המדדים של DaemonSet מאפשרים לעקוב אחרי ההתנהגות של הבקר ולקבל התראות. בטבלה הבאה מפורטים המדדים שזמינים בחבילת kube state metrics:
לשמות המדדים של Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהערכים בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_daemonset_status_desired_number_scheduledkube_daemonset_status_desired_number_scheduled/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הצמתים שצריכים להריץ את פוד ה-daemon.
נדגם כל 30 שניות.daemonset: daemonset.
|
kube_daemonset_status_number_misscheduledkube_daemonset_status_number_misscheduled/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הצמתים שמריצים pod של daemon, אבל לא אמורים לעשות זאת. נדגמים כל 30 שניות.daemonset: daemonset.
|
kube_daemonset_status_number_readykube_daemonset_status_number_ready/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הצמתים שצריכים להפעיל את פוד ה-daemon, ושפוד ה-daemon יפעל בהם ויהיה מוכן. נדגמים כל 30 שניות.daemonset: daemonset.
|
kube_daemonset_status_updated_number_scheduledkube_daemonset_status_updated_number_scheduled/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הצמתים שבהם פועל daemon pod מעודכן.
נדגם כל 30 שניות.daemonset: daemonset.
|
למידע נוסף, ראו מדדי DaemonSet.
דוגמאות לשאילתות על מדדים של DaemonSet
כדי ליצור תרשימים ומדיניות התראות ל-DaemonSets ספציפיים, אפשר לסנן את המדדים של daemonset לפי אשכול, מרחב שמות ושם ה-DaemonSet.
לדוגמה, כדי להשוות בין מספר הרפליקות הזמינות לבין מספר הרפליקות הצפוי ב-DaemonSet יחיד, אפשר להשתמש בשאילתות PromQL הבאות כדי לשרטט את שני המדדים בתרשים אחד:
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}
כדי לקבל התראה על פריסה שנכשלה או נעצרה של DaemonSet, אפשר להשתמש בביטוי הבא של PromQL:
(
(
kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
!=
0
) or (
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
!=
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
)
) and (
changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m])
==
0
)
חלק מהשאילתות והביטויים של ההתראות בקטע הזה הותאמו מקובץ kubernetes-apps.yaml במאגר התרשימים של Prometheus community Kubernetes Helm ב-GitHub.
מדדי HorizontalPodAutoscaler
HorizontalPodAutoscaler (HPA) הוא בקר שמשנה מדי פעם את מספר הפודים בעומס עבודה, כמו Deployment או StatefulSet, בתגובה למדד מסוים כמו ניצול המעבד (CPU) או הזיכרון. שינוי מספר הפודים שזמינים לעומס עבודה מאפשר לעומס העבודה להמשיך להגיב ביעילות.
מידע נוסף על HPA זמין במאמר הצגת פרטים על Horizontal Pod Autoscaler.
טבלה של מדדי HPA
המדדים של HorizontalPodAutoscaler מאפשרים לעקוב אחרי ההתנהגות של בקר המערכת ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילת kube state metrics:
לשמות המדדים של Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהערכים בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_horizontalpodautoscaler_spec_max_replicaskube_horizontalpodautoscaler_spec_max_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
הגבול העליון למספר הפודים שאפשר להגדיר באמצעות קנה מידה אוטומטי,
לא יכול להיות קטן מ-MinReplicas.
נדגמים כל 30 שניות.horizontalpodautoscaler: horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_min_replicaskube_horizontalpodautoscaler_spec_min_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
הגבול התחתון למספר הפודים שאפשר להגדיר באמצעות Autoscaler, ברירת המחדל היא 1.
נדגם כל 30 שניות.horizontalpodautoscaler: horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_target_metrickube_horizontalpodautoscaler_spec_target_metric/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מפרטי המדדים שבהם נעשה שימוש במידרוג האוטומטי הזה כשמחשבים את
מספר הרפליקות הרצוי.
נדגם כל 30 שניות.horizontalpodautoscaler: horizontalpodautoscaler.
metric_name: metric_name.
metric_target_type: metric_target_type.
|
kube_horizontalpodautoscaler_status_conditionkube_horizontalpodautoscaler_status_condition/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
המצב של המידרוג האוטומטי הזה.
נדגמים כל 30 שניות.condition: תנאי.
horizontalpodautoscaler: horizontalpodautoscaler.
namespace: מרחב שמות.
status: סטטוס.
|
kube_horizontalpodautoscaler_status_current_replicaskube_horizontalpodautoscaler_status_status_current_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הרפליקות הנוכחי של הפודים שמנוהלים על ידי המידרוג האוטומטי הזה.
נדגמים כל 30 שניות.horizontalpodautoscaler: horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_status_desired_replicaskube_horizontalpodautoscaler_status_desired_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר הרפליקות הרצוי של Pods שמנוהלים על ידי ה-autoscaler הזה.
נדגמים כל 30 שניות.horizontalpodautoscaler: horizontalpodautoscaler.
|
מידע נוסף זמין במאמר מדדים של Horizontal Pod Autoscaler (HPA).
דוגמאות לשאילתות על מדדי HPA
לדוגמה, כדי לקבוע אם ה-HPA מתקרב למספר המקסימלי של רפליקות, אפשר לשרטט את היחס הבא:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} /
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
כשה-HPA פועל עם המספר המקסימלי של רפליקות, יכול להיות שתרצו להגדיל את המפרט של המספר המקסימלי של הפודים. אפשר להשתמש בביטוי PromQL הבא כדי ליצור התראה שתשלח לכם הודעה על המקרה הזה:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
==
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
אפשר גם להשוות בין הערכים של המדדים kube_horizontalpodautoscaler_status_current_replicas ו-kube_horizontalpodautoscaler_status_desired_replicas כדי לקבוע אם יש הבדל בין מספר הרפליקות הנוכחי לבין מספר הרפליקות הנדרש. הבדל יכול להצביע על מגבלת משאבים באשכול. הביטוי הבא ב-PromQL מחפש הבדלים בין מספר הרפליקות הנוכחי לבין מספר הרפליקות הנדרש, המינימלי והמקסימלי, וגם שינויים במספר הרפליקות הנוכחי:
(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
!=
kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
>
kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
<
kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
and
changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0
התוויות condition ו-status במדד kube_horizontalpodautoscaler_status_condition יכולות גם לעזור לכם לזהות מתי מתרחשים מצבי כשל שונים ב-HPA. לדוגמה:
- התנאי
ScalingLimitedוהסטטוס שלtrueמציינים שה-HPA מוגבל על ידי מספר הרפליקות המינימלי או המקסימלי שלו:kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1 התנאי
AbleToScaleוהסטטוסfalseמציינים שה-HPA נתקל בבעיות באחזור או בעדכון של קנה המידה:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1התנאי
ScalingActiveוהסטטוסfalseמציינים שה-HPA מושבת או לא יכול לחשב קנה מידה חדש:kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1
חלק מהשאילתות והביטויים של ההתראות בקטע הזה הותאמו מקובץ kubernetes-apps.yaml במאגר התרשימים של Prometheus community Kubernetes Helm ב-GitHub.
מדדי JobSet
Jobset הוא ממשק API של עומס עבודה שמאפשר לנהל קבוצה של משימות Kubernetes כיחידה אחת. התרחיש הנפוץ ביותר לשימוש ב-JobSet הוא אימון מבוזר, אבל אפשר להשתמש בו גם להרצת עומסי עבודה של אצווה.
מידע נוסף על JobSets זמין במסמכי התיעוד של JobSet.
טבלה של מדדי JobSet
מדדי JobSet מאפשרים לעקוב אחרי ההתנהגות של JobSet ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילה kube state metrics:
לשמות המדדים של Cloud Monitoring בטבלה הזו צריך להוסיף את הקידומת prometheus.googleapis.com/. התחילית הזו הושמטה מהערכים בטבלה.
| שם המדד ב-PromQL שם המדד ב-Cloud Monitoring |
|
|---|---|
|
Kind, Type, Unit
Monitored resources Required GKE version |
תיאור תוויות |
kube_jobset_specified_replicaskube_jobset_specified_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
מספר העותקים המשוכפלים שצוינו לכל עבודה משוכפלת ב-JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
|
kube_jobset_ready_replicaskube_jobset_ready_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
מספר הרפליקות במצב 'READY' לכל עבודות משוכפלות ב-JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
|
kube_jobset_succeeded_replicaskube_jobset_succeeded_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
מספר הרפליקות במצב SUCCEEDED לכל משימה משוכפלת ב-JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
|
kube_jobset_failed_replicaskube_jobset_failed_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
מספר הרפליקות במצב FAILED (נכשל) לכל משימות משוכפלות ב-JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
|
kube_jobset_active_replicaskube_jobset_active_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
מספר הרפליקות במצב 'ACTIVE' לכל משימות משוכפלות ב-JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
|
kube_jobset_suspended_replicaskube_jobset_suspended_replicas/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
מספר העותקים במצב 'SUSPENDED' לכל עבודה משוכפלת ב-JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
|
kube_jobset_status_conditionkube_jobset_status_condition/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.1-gke.1357001 |
תנאי הסטטוס הנוכחיים של JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
condition: מצב.
|
kube_jobset_restartskube_jobset_restarts/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.32.4-gke.1767000 1.33.0-gke.1868000 |
מספר ההפעלות מחדש של JobSet.
נדגמים כל 30 שניות.jobset_name: jobset_name.
|
שאילתות לדוגמה למדדי JobSet
אפשר ליצור תרשימים ומדיניות התראות עבור JobSet ספציפיים על ידי סינון מדדי JobSet לפי אשכול, מרחב שמות ושם ה-JobSet.
לדוגמה, כדי להשוות בין מספר הרפליקות במצב READY לבין מספר הרפליקות הצפוי ב-JobSet יחיד, אפשר להציג את שני המדדים בתרשים אחד באמצעות שאילתות PromQL הבאות:
kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
כדי לקבל התראה על השקה של JobSet שנכשלה או לא זמינה, אתם יכולים להשתמש בביטוי PromQL הבא:
kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
>
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
התווית condition במדד kube_jobset_status_condition יכולה גם לעזור לכם לזהות מתי קבוצות של משימות נתקלות במצבי כשל שונים, למשל:
- המצב
Failedמציין שההרצה של JobSet נכשלה:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Failed"} == 1 - התנאי
Suspendedמציין שה-JobSet מושעה:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Suspended"} == 1
חלק מהביטויים של השאילתות וההתראות בקטע הזה הותאמו מהקובץ kubernetes-apps.yaml במאגר Prometheus community Kubernetes Helm Charts ב-GitHub.
המאמרים הבאים
- עיון בחבילות המדדים הזמינות האחרות
- איסוף מדדי Kubernetes ספציפיים שלא נכללים בחבילה הזו
- הצגת מדדי יכולת הצפייה
- שימוש במדדי ביצועים של אפליקציות