במהלך הרצת אשכולות אימון מתבצעות בדיקות תקינות אוטומטיות בצמתים, ואם אחת מהבדיקות נכשלת, המערכת מתערבת. לדוגמה, אם מזוהה שגיאת XID חמורה, המערכת עשויה לנקז את הצומת, להוסיף מחדש את עבודת Slurm המושפעת לתור וליצור מחדש את הצומת. כל אחד מהשינויים האלה נרשם ביומנים של הפרויקט כאירוע חוסן.
בדף הזה נסביר איך ליצור לוח בקרה מותאם אישית ב-Cloud Monitoring שבו מוצגים תרשימים של אירועי החוסן האלה לצד מצב Slurm של צמתי החישוב, כדי שתוכלו לראות אילו פעולות שחזור בוצעו על ידי השירות ואיך הן קשורות למצב של האשכול. מרכז הבקרה כולל שני תרשימים:
- מצבי צמתים ב-Slurm: מספר הצמתים בכל מצב של Slurm לאורך זמן, מתוך המדד
hypercomputecluster.googleapis.com/slurm/node_state. - אירועי חוסן: ספירה של אירועי חוסן, עם פירוט לפי סוג האירוע, שנלקחת ממדד מבוסס-יומן שיוצרים בקטע הבא.
לפני שמתחילים
מתקינים ומאתחלים את Google Cloud CLI, ואז מגדירים את הפרויקט שמכיל את אשכולות האימון:
gcloud auth login gcloud config set project PROJECT_ID
מחליפים את PROJECT_ID במזהה הפרויקט.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת מדד מבוסס-יומנים ולוח בקרה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
יוצרים את המדד מבוסס-היומנים:
Logs Configuration Writer (
roles/logging.configWriter) -
יוצרים את לוח הבקרה:
Monitoring Dashboard Configuration Editor (
roles/monitoring.dashboardEditor)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות ליצירת מדד מבוסס-יומן ולוח בקרה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור את המדד מבוסס-היומן ואת מרכז הבקרה, נדרשות ההרשאות הבאות:
-
יוצרים את המדד מבוסס-היומנים:
logging.logMetrics.create -
יוצרים את לוח הבקרה:
monitoring.dashboards.create
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת מדד מבוסס-יומנים
אירועי חוסן נרשמים ביומנים של הפרויקט, כאשר כל אירוע נושא תווית event_type עם הקידומת RESILIENCE_EVENT_TYPE_. כדי לראות את האירועים הגולמיים ב-Logs Explorer, משתמשים בשאילתה הבאה:
labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"
אי אפשר ליצור תרשים של רשומות ביומן ישירות ב-Cloud Monitoring, ולכן צריך להפוך את השאילתה הזו קודם למדד שמבוסס על יומן.
שומרים את ההגדרה הבאה בקובץ בשם
resilience_metric.yaml:name: training_cluster_resilience_events description: "Resilience events on training cluster nodes (VM instances)." filter: 'resource.type="gce_instance" AND labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"' metricDescriptor: metricKind: DELTA valueType: INT64 unit: "1" labels: - key: cluster_id valueType: STRING description: "The ID of the training cluster." - key: event_type valueType: STRING description: "The type of resilience event." - key: slurm_job_name valueType: STRING description: "The name of the Slurm job that triggered the resilience event, if applicable." - key: slurm_job_id valueType: STRING description: "The ID of the Slurm job that triggered the resilience event, if applicable." - key: slurm_job_partition valueType: STRING description: "The partition that the resilience event acts on." labelExtractors: cluster_id: "EXTRACT(labels.cluster_id)" event_type: "EXTRACT(labels.event_type)" slurm_job_name: "EXTRACT(labels.slurm_job_name)" slurm_job_id: "EXTRACT(labels.slurm_job_id)" slurm_job_partition: "EXTRACT(labels.slurm_job_partition)"השדה
labelExtractorsמעתיק את התוויות של כל רשומה ביומן אל המדד, וכך מאפשר לפרק את התרשים לפי סוג האירוע, לפי אשכול או לפי משימת Slurm.יוצרים את המדד:
gcloud logging metrics create training_cluster_resilience_events \ --config-from-file=resilience_metric.yamlמוודאים שהמדד קיים:
gcloud logging metrics describe training_cluster_resilience_eventsאפשר גם לאשר את המדד במסוף Cloud de Confiance בדף מדדים מבוססי-יומן.
יצירת לוח הבקרה
שומרים את ההגדרה הבאה בקובץ בשם
resilience_dashboard.json:{ "displayName": "Training Clusters Resilience Dashboard", "mosaicLayout": { "columns": 48, "tiles": [ { "height": 16, "width": 24, "widget": { "title": "Slurm node states", "xyChart": { "chartOptions": { "mode": "COLOR" }, "dataSets": [ { "minAlignmentPeriod": "60s", "plotType": "LINE", "targetAxis": "Y1", "timeSeriesQuery": { "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_SUM", "groupByFields": [ "metric.label.\"state\"" ], "perSeriesAligner": "ALIGN_MEAN" }, "filter": "metric.type=\"hypercomputecluster.googleapis.com/slurm/node_state\" resource.type=\"gce_instance\"" } } } ], "yAxis": { "scale": "LINEAR" } } } }, { "yPos": 16, "height": 16, "width": 24, "widget": { "title": "Resilience events", "xyChart": { "chartOptions": { "mode": "COLOR" }, "dataSets": [ { "minAlignmentPeriod": "60s", "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_COUNT", "groupByFields": [ "metric.label.\"event_type\"" ], "perSeriesAligner": "ALIGN_COUNT" }, "filter": "metric.type=\"logging.googleapis.com/user/training_cluster_resilience_events\" resource.type=\"gce_instance\"" } } } ], "yAxis": { "scale": "LINEAR" } } } } ] } }אם נתתם למדד מבוסס-היומן שם אחר בקטע הקודם, צריך לשנות את המסנן
logging.googleapis.com/user/בהתאם.יוצרים את לוח הבקרה:
gcloud monitoring dashboards create \ --config-from-file=resilience_dashboard.jsonנכנסים לדף Dashboards במסוף Cloud de Confiance , ואז פותחים את Training Clusters Resilience Dashboard בקטע My Dashboards. יכול להיות שיעברו כדקה עד שהמרכז יופיע.
פתרון בעיות
בקטעים הבאים מתוארות הבעיות שסביר להניח שתיתקלו בהן אחרי יצירת המדד ולוח הבקרה.
התרשים 'אירועי חוסן' ריק
לא מתבצע מילוי חוזר של מדד מבוסס-יומנים. הוא סופר רק רשומות ביומן שמגיעות אחרי שיוצרים את המדד. כפי שמוסבר בסקירה הכללית של מדדים מבוססי-יומן, מדד לא מאוכלס רטרואקטיבית בנתונים מיומני אירועים שכבר נמצאים ב-Cloud Logging.
אם התרחשו אירועים של חוסן מאז שיצרתם את המדד והתרשים עדיין ריק, צריך להריץ את השאילתה שבקטע יצירת מדד מבוסס-יומן כדי לוודא שהאירועים מופיעים ב-Logs Explorer.
בתרשים 'מצבי צמתים של Slurm' חסרים חלק מהאשכולות
המדד hypercomputecluster.googleapis.com/slurm/node_state מדווח רק על ידי אשכולות שפועלת בהם גרסה עדכנית מספיק של תוכנת האשכול. אם חסר אשכול בתרשים, מעדכנים את האשכול ואז בודקים שוב את התרשים.
תרשים 'מצבי צומת של Slurm' לא מציג צמתי התחברות
זה תקין. לצמתי התחברות אין מצב Slurm, כמו idle או mixed, ולכן הם לא מדווחים על המדד slurm/node_state.
התרשים 'אירועי חוסן' סופר יותר מדי אירועים
שירות Cloud Logging מעבד כל רשומה ביומן לפחות פעם אחת, ולכן שגיאה פנימית זמנית עלולה לגרום לכך שרשומה תיספר יותר מפעם אחת. מידע נוסף זמין במאמר פתרון בעיות במדדים שמבוססים על יומנים.
הרשומות עצמן ביומן הן המקור הקובע. כדי לקבל ספירה מדויקת של אירועים בטווח זמן מסוים, צריך להריץ שאילתה על האירועים בכלי Logs Explorer במקום לקרוא אותם מהתרשים.