בדף הזה מוסבר איך להגדיר אשכול Google Kubernetes Engine (GKE) כדי לשלוח קבוצה נבחרת של מצבי kube, כולל מדדים של Pod ופריסות, ל-Cloud Monitoring באמצעות השירות המנוהל של Google Cloud ל-Prometheus. בדף הזה מוסבר גם איך המדדים האלה מעוצבים כשהם נכתבים ב-Monitoring, ואיך לשלוח שאילתות לגבי מדדים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-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, gcloud CLI או Terraform: Google Cloud
המסוף
אפשר להפעיל את המדדים של מצב kube מהכרטיסייה Observability (יכולת צפייה) עבור אשכול או פריסה באשכול. אפשר גם לראות תצוגה מקדימה של התרשימים והמדדים הזמינים לפני שמפעילים את חבילת המדדים.
בכרטיסייה Observability (יכולת תצפית) של אשכול, אפשר לסנן את קבוצת התרשימים של מדדי מצב kube לפי שני הפריטים הבאים:
- מצב עומסי העבודה: כולל את המדדים של משאבי Pods, Deployments, StatefulSets, DaemonSets ו-HorizontalPodAutoscaler.
- אחסון > מתמשך: כולל את המדדים של נפחי אחסון מתמיד ודרישות נפח אחסון מתמיד.
אפשר להפעיל את אחת מקבוצות המדדים או את שתיהן.
כדי להפעיל את מדדי מצב ה-kube מהכרטיסייה Observability (יכולת צפייה) עבור אשכול, מבצעים את הפעולות הבאות:
-
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם האשכול ואז על הכרטיסייה Observability (יכולת תצפית).
בוחרים באפשרות Workloads State או באפשרות Storage > Persistent מרשימת התכונות.
לוחצים על הפעלת החבילה.
אם חבילת המדדים של מצב ה-kube כבר מופעלת, יוצג לכם במקום זאת סט של תרשימים של מדדים של מצב ה-kube.
כדי להפעיל את המדדים של מצב ה-kube מהכרטיסייה Observability עבור פריסה, מבצעים את הפעולות הבאות:
-
במסוף Google Cloud , עוברים לדף Workloads:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם הפריסה ובוחרים בכרטיסייה Observability (יכולת צפייה).
בוחרים באפשרות Kube State מתוך רשימת התכונות.
לוחצים על הפעלת החבילה. החבילה מופעלת לכל האשכול.
אם חבילת המדדים של מצב ה-kube כבר מופעלת, יוצגו לכם קבוצה של תרשימים של מדדים מ-Pods, מ-Deployments ומ-Horizontal Pod Autoscalers.
כדי להגדיר את המדדים של מצב ה-kube מהכרטיסייה פרטים של האשכול:
-
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Kubernetes Engine.
לוחצים על שם האשכול.
בשורה Features (תכונות) עם התווית Cloud Monitoring, לוחצים על סמל העריכה.
בתיבת הדו-שיח Edit Cloud Monitoring שמופיעה, מוודאים שהאפשרות Enable Cloud Monitoring מסומנת.
בתפריט הנפתח רכיבים, בוחרים את רכיבי 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 ב
google_container_cluster במאגר Terraform.
מידע כללי על שימוש ב- Google Cloud עם Terraform זמין במאמר Terraform עם Google Cloud.
מכסה
המדדים של Kube State צורכים את המכסה Time series ingestion requests per minute של 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: כשמשתמשים ב-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 |
קיבולת נפח אחסון מתמיד בבייטים.
נדגמים כל 30 שניות.persistentvolume: persistentvolume.
|
kube_persistentvolume_claim_refkube_persistentvolume_claim_ref/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מידע על הפניה לדרישת נפח אחסון מתמיד.
נדגמים כל 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: שם הכרך.
|
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 |
השלב שבו נמצאת כרגע דרישת נפח האחסון המתמיד.
נדגמים כל 30 שניות.persistentvolumeclaim: persistentvolumeclaim.
phase: שלב.
|
מידע נוסף זמין במאמרים בנושא מדדים של PersistentVolume ומדדים של PersistentVolumeClaim.
מדדים של Pod
Pod הוא קבוצה של קונטיינר אחד או יותר עם מפרט לגבי אופן ההפעלה של הקונטיינרים, שמשתפים אחסון ומשאבי רשת.
טבלה של מדדי Pod
מדדי ה-Pod מאפשרים לכם לנטר את ההתנהגות של ה-Pods ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילת המדדים של kube state.
לשמות המדדים ב-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: 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: phase.
pod: צוות.
uid: uid.
|
kube_pod_status_unschedulablekube_pod_status_unschedulable/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מתאר את הסטטוס של הפוד שלא ניתן לתזמן אותו.
נדגמים כל 30 שניות.pod: pod.
uid: uid.
|
מידע נוסף זמין במאמר מדדים של Pod.
דוגמאות לשאילתות על מדדי Pod
כדי לקבוע אם יש לכם Pods שלא ניתן לתזמן, משתמשים בביטוי הבא של PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
כדי לקבל התראה על מספר מסוים של פודים שלא ניתן לתזמן במרחב שמות, אפשר להשתמש בביטוי 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 משמשים גם בחוברות העבודה האינטראקטיביות של GKE לפתרון בעיות של פודים שלא ניתן לתזמן או של פודים שמתרחשים בהם לולאות קריסה. מידע נוסף על מצבי הכשל האלה זמין במאמרי פתרון הבעיות הבאים:
אם חבילת המדדים של מצב ה-kube לא מופעלת, הדרך העיקרית לזהות בעיות בתזמון של פודים היא לשלוח שאילתה לאירועי היומן Failed Scheduling (תזמון שנכשל). אחרי שמפעילים את חבילת המדדים של מצב kube, אפשר להשתמש במדד kube_pod_status_unschedulable, שמשרת את אותה מטרה אבל קל יותר לצבור אותו ולשרטט אותו. בעזרת המדד הזה אפשר לראות כמה פודים לא ניתנים לתזמון ומתי הבעיה התחילה.
באופן דומה, מדד המערכת של 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: פריסה.
|
kube_deployment_status_replicas_updatedkube_deployment_status_replicas_updated/gauge
|
|
GAUGE, DOUBLE, 1
prometheus_target 1.27.2-gke.1200 |
מספר העותקים המשוכפלים המעודכנים לכל פריסה. נדגמים כל 30 שניות.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 ב-GitHub.
מדדים של DaemonSet
DaemonSet הוא בקר שעוזר לוודא שקבוצה מסוימת של צמתים מריצה עותק של Pod. לדוגמה, כשמוסיפים צמתים לאשכול, ה-DaemonSet מוסיף Pods לצמתים. הבקר הזה עוזר לוודא שתהליכים מסוימים פועלים בכל צומת.
טבלה של מדדים של 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 |
מספר הצמתים שמריצים תרמיל 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 pod, ושצריכים להפעיל לפחות אחד מה-daemon pod ולהיות מוכנים. נדגמים כל 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 |
מספר הצמתים שבהם פועל פוד הדמון המעודכן.
נדגמים כל 30 שניות.daemonset: daemonset.
|
מידע נוסף זמין במאמר בנושא מדדים של DaemonSet.
דוגמאות לשאילתות לגבי מדדים של DaemonSet
אפשר ליצור תרשימים ומדיניות התראות עבור DaemonSet ספציפיים על ידי סינון מדדים של 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 |
מספר הרפליקות הרצוי של הפודים שמנוהלים על ידי קנה המידה האוטומטי הזה.
נדגמים כל 30 שניות.horizontalpodautoscaler: horizontalpodautoscaler.
|
מידע נוסף זמין במאמר בנושא מדדים של Horizontal Pod Autoscaler.
שאילתות לדוגמה למדדי 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 מאפשרים לכם לעקוב אחרי ההתנהגות של JobSets ולקבל התראות לגביה. בטבלה הבאה מפורטים המדדים שזמינים בחבילת 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 |
מספר הרפליקות במצב 'הושלם' לכל עבודות משוכפלות ב-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 |
מספר העותקים במצב 'נכשל' לכל עבודה משוכפלת ב-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 ב-GitHub.
המאמרים הבאים
- עיון בחבילות אחרות של מדדים שזמינות
- איך אוספים מדדים ספציפיים של Kubernetes שלא כלולים בחבילה הזו
- הצגת מדדי יכולת הצפייה
- שימוש במדדי ביצועים של אפליקציות