לכל מכונה וירטואלית (VM) או מכונת Bare Metal יש מדיניות תחזוקה של המארח, שקובעת את ההתנהגות של המכונה במהלך פעולת תחזוקה. בחלק מהמכונות יש אפשרות נוספת לראות את לוח הזמנים של התחזוקה מראש.
בדף הזה מוסבר איך לעקוב אחרי אירוע תחזוקה של מארח במכונות Compute Engine, ואיך לתכנן אותו.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API של Cloud de Confiance by S3NS , לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות ליצירת מכונות ולניהול התחזוקה שלהן, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין מכונות של Compute (v1) (
roles/compute.instanceAdmin.v1) -
כדי לקבל גישה לקריאה בלבד ליומני הביקורת של אירועי מערכת:
צפייה ביומנים (
roles/logging.viewer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
אלה תפקידים מוגדרים מראש שכוללים את ההרשאות שנדרשות כדי ליצור מכונות ולנהל את התחזוקה שלהן. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור מכונות ולנהל את התחזוקה שלהן, צריך את ההרשאות הבאות:
-
כדי לקבל מידע על מכונה, כולל מטא-נתונים:
compute.instances.get
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מגבלות
אתם יכולים לראות התראות על אירוע תחזוקה קרוב של מכונה רק אם המכונה משתמשת בסוג מכונה מאחת ממשפחות המכונות הבאות:
משפחות מכונות שעברו אופטימיזציה למאיצים:
משפחות מכונות לשימוש כללי:
משפחות של מכונות מותאמות לצריכת זיכרון גבוהה (memory-optimized):
סקירה כללית על התראות לגבי פעולות תחזוקה
Google שולחת התראות על תחזוקה קרובה של המארח בכמה דרכים. כשחלון הזמן לתחזוקה נפתח, Cloud de Confiance by S3NS מבצע באופן אוטומטי את התחזוקה במכונה. אם תעקבו אחרי חלונות הזמן לתחזוקה של המכונה, תוכלו להכין את עומסי העבודה לתחזוקה הקרובה כדי למזער את ההפרעה.
למכונות שתומכות בהתראות לגבי אירועי תחזוקה יש את המאפיינים הבאים:
- פחות אירועי תחזוקה: באופן כללי, במכונות עם מרווחי תחזוקה חוזרים אמורים להיות פחות אירועי תחזוקה.
- התראות תחזוקה ארוכות יותר: קבלת התראות על אירועי תחזוקה זמן רב מראש, כדי שתוכלו לתכנן בהתאם.
- מעקב ותכנון: אתם יכולים להשתמש ב-Cloud Logging כדי לעקוב אחרי לוח הזמנים של התחזוקה. כדי להישאר מעודכנים, אפשר להשתמש באירועים ובהתראות.
- שליטה בתחזוקה מתי שנוח: אפשר להתחיל את התחזוקה במהלך תקופת ההתראה כדי לעדכן את המכונות בזמן שמתאים לכם.
המידע על אירוע ההתראה הקרוב מוצג באופן דומה לזה:
upcomingMaintenance:{
"canReschedule":True
"latestWindowStartTime": "2024-12-01T19:00:01Z"
"machineType":"x4-960-16t-metal"
"maintenanceStatus":"PENDING"
"type":"SCHEDULED"
"windowEndTime": "2024-12-01T22:00:00Z"
"windowStartTime": "2024-12-01T19:00:00Z"
}
אם אין אירוע תחזוקה קרוב, תופיע הודעה דומה לזו:
{ "error": "no notifications have been received yet, try again later" }
הגדרות של סטטוס התחזוקה
הגדרות הסטטוס הבאות מסבירות את התגובות לשאילתות לגבי תחזוקת המארח של מכונה. הם מספקים מידע שקשור לאירוע התחזוקה. התגובות האלה זהות ב-Google Cloud CLI, ב-REST ובשרת המטא-נתונים:
- canReschedule: אם אפשר להתחיל את התחזוקה באופן ידני במהלך תקופת ההתראה של המכונה הזו.
-
TRUE: אפשר לבצע תחזוקה בהפעלת הלקוח במהלך תקופת ההתראה. -
FALSE: אי אפשר לבצע תחזוקה בהפעלת הלקוח במכונה הזו. לרוב זה קורה כשהמכונה עוברת תחזוקה, או אם סוג המכונה לא תומך בתחזוקה על פי דרישה.
-
- latestWindowStartTime: המועד האחרון שאפשר להעביר אליו את חלון הזמן לתחזוקה.
- machineType: סוג המכונה של המכונה, לדוגמה
x4-960-16t-metalאוc4-highmem-192. - maintenanceReason: הסיבה לאירוע תחזוקה דחוף. לדוגמה:
-
FAILURE_GPU_TEMPERATURE: תחזוקה בגלל טמפרטורה גבוהה של ה-GPU. -
FAILURE_MEMORY: תחזוקה בגלל שגיאות בזיכרון. -
FAILURE_NETWORK: תחזוקה בגלל שגיאות בחיבור לרשת. -
FAILURE_DISK: תחזוקה בגלל שגיאות בדיסק.
-
- maintenanceStatus: הסטטוס הנוכחי של אירוע התחזוקה.
-
ONGOING: פעולת התחזוקה מתבצעת. -
PENDING: פעולת התחזוקה מתוזמנת, אבל עדיין לא התחילה.
-
- type: סוג התחזוקה שצריך לבצע.
-
NONE: לא מתוכננות עבודות תחזוקה למכונה הזו. -
SCHEDULED: ברוב המכונות, Compute Engine מספק התראה של 7 ימים לפחות לפני תחזוקה שמשבשת את הפעילות. לפרטים על תקופות ספציפיות של התראה מראש, עיינו במסמכי התיעוד של סדרת המכונות שלכם. -
UNSCHEDULED: מכיוון שהתחזוקה מייצגת עדכונים קריטיים או דחופים, Compute Engine מנסה לספק התראה מוקדמת ככל האפשר, אבל בדרך כלל היא קצרה בהרבה מאירועי תחזוקה מתוזמנים.
-
- windowEndTime: סיום חלון הזמן שבו מתבצעת התחזוקה.
- windowStartTime: תחילת חלון הזמן שבו מתבצעת התחזוקה.
התנהגויות של סטטוס תחזוקה
כשמנהלים אירועי תחזוקה, צריך לבדוק את הערכים של canReschedule ו-maintenanceStatus. השילוב של השדות האלה מציין אילו פעולות אפשר או אי אפשר לבצע בנוגע לתזמון מחדש של אירוע תחזוקה:
-
canReschedule=Trueו-maintenanceStatus=Pending– אפשר להתחיל באופן ידני את אירוע התחזוקה של המכונה לפני שעת ההתחלה המתוזמנת. -
canReschedule=Falseו-maintenanceStatus=Ongoing– עבודות התחזוקה מתבצעות ואי אפשר לשנות את המועד שלהן. -
canReschedule=Falseו-maintenanceStatus=Pending– המכונה לא תומכת באירועי תחזוקה שמופעלים ידנית.
הצגת התראות לגבי פעולות תחזוקה
כדי למצוא התראות על תחזוקה, אתם יכולים לשלוח שאילתות למכונות, לשרת המטא-נתונים או להשתמש ב-Cloud Logging.
באותן שיטות אפשר גם לראות אירועי תחזוקה דחופים. עם זאת, ההתראות על אירועי תחזוקה דחופים כוללות את השדה type עם הערך UNSCHEDULED, ואפשר לראות את השדה הזה רק באמצעות Cloud Logging.
בדיקת מכונות כדי לראות אם יש התראה לגבי אירוע תחזוקה
כדי לבדוק אם יש אירוע תחזוקה קרוב של המארח של המכונה, אתם יכולים להשתמש ב-Google Cloud CLI, ב-REST או לשלוח שאילתה לשרת המטא-נתונים.
gcloud
כדי לראות את חלון זמן התחזוקה הקרוב של מכונה, משתמשים בפקודה gcloud compute instances describe.
gcloud compute instances describe INSTANCE_NAME \ --zone=ZONE_NAME --format="yaml(resourceStatus.upcomingMaintenance)"
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה. -
ZONE_NAME: האזור שבו נמצאת המכונה.
אם יש אירוע תחזוקה קרוב, התגובה תכיל קטע שדומה לזה:
resourceStatus:
upcomingMaintenance:
canReschedule: true
latestWindowStartTime: '2025-01-15T12:00:01Z'
machineType: x4-960-16t-metal
maintenanceStatus: PENDING
type: SCHEDULED
windowEndTime: '2025-01-15T16:00:00Z'
windowStartTime: '2025-01-15T12:00:00Z'
בתשובה הזו:
- עבודות התחזוקה מתוזמנות לתאריך ולשעה שמופיעים בשדה
windowStartTime. - הערך של
canRescheduleהואtrueוהערך שלmaintenanceStatusהואPENDING. ההגדרות האלה מציינות שאפשר להתחיל באופן ידני את אירוע התחזוקה המתוזמן לפני התאריך שמוצג ב-latestWindowStartTime.
אם הפקודה מחזירה את הערך null, סימן שלא מתוזמן אירוע תחזוקה, וכדאי לבדוק שוב בתאריך או בשעה אחרים.
REST
כדי לבדוק אם יש עבודות תחזוקה קרובות למכונה, יוצרים בקשת GET באמצעות ה-method instances.get:
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NAME: שם הפרויקט שמכיל את המכונה. -
ZONE: האזור שבו נמצאת המכונה. -
INSTANCE_NAME: שם המכונה.
אם יש אירוע תחזוקה קרוב, התגובה תכיל קטע שדומה לזה:
upcomingMaintenance:{
"canReschedule":True
"latestWindowStartTime": "2023-12-01T19:00:01Z"
"machineType": "x4-960-16t-metal"
"maintenanceStatus":"PENDING"
"type":"SCHEDULED"
"windowEndTime": "2023-12-01T22:00:00Z"
"windowStartTime": "2023-12-01T19:00:00Z"
}
בתשובה הזו:
- עבודות התחזוקה מתוזמנות לתאריך ולשעה שמופיעים בשדה
windowStartTime. - הערך של
canRescheduleהואTrueוהערך שלmaintenanceStatusהואPENDING. ההגדרות האלה מציינות שאפשר להתחיל באופן ידני את אירוע התחזוקה המתוזמן לפני התאריך שמוצג ב-latestWindowStartTime.
אם השאילתה מחזירה את הערך NONE עם קוד HTTP 200, סימן שלא מתוכנן אירוע תחזוקה וצריך לבדוק שוב בתאריך או בשעה אחרים.
שרת מטא-נתונים
ממערכת ההפעלה של האורח, שולחים שאילתה לשרת המטא-נתונים כדי לראות את אירוע התחזוקה הבא.
$ curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"
אם השאילתה מחזירה את הערך NONE עם קוד HTTP 200, סימן שלא מתוכנן אירוע תחזוקה וצריך לבדוק שוב בתאריך או בשעה אחרים.
בדיקה ב-Cloud Logging אם יש התראה לגבי אירוע תחזוקה
ב-Compute Engine נוצרים אירועי מערכת ביומני הביקורת של Cloud לאירועי תחזוקה של מכונה. אתם יכולים לראות את האירועים האלה לפני, במהלך ואחרי אירוע תחזוקה באמצעות Cloud Logging והכלי "מציג היומנים".
המסוף
כדי לשלוח שאילתה ליומני הביקורת לגבי התראות תחזוקה של מכונה, מבצעים את הפעולות הבאות:
נכנסים לדף VM instances.
לוחצים על Name של המכונה שרוצים לראות את התראות התחזוקה שלה.
הדף Instance details נפתח.
בקטע Logs, לוחצים על הקישור Logging.
הדף עורך השאילתות של Logs Explorer נפתח. בחלונית Query, המזהה של
resource.typeוהמזהה של המכונה כבר מאוכלסים במכונה שלכם.בחלונית Query, מוסיפים את השורה הבאה לשאילתה:
operation.producer="compute.instances.upcomingMaintenance" OR "compute.instances.terminateOnHostMaintenance" OR "compute.instances.migrateOnHostMaintenance"לוחצים על Run query. אירועי ההתראות על תחזוקה שתואמים לשאילתה מופיעים בחלונית של תוצאות השאילתה.
בחלונית של תוצאות השאילתה, אפשר ללחוץ על Edit time כדי להרחיב את מסגרת הזמן של החיפוש, או כדי לצמצם את התוצאות לתאריכים או לשעות ספציפיים.
לוחצים על רשומה ביומן כדי לראות את פרטי ההתראה על התחזוקה.
- כדי לראות התראות על תחזוקה קרובה, מרחיבים את הכותרת
metadataורואים מידע כמו הסטטוס הנוכחי, הסוג ושעות ההתחלה והסיום של חלון הזמן לתחזוקה. - מרחיבים את הכותרת
statusכדי לראות את ההודעה עם התיאור של ההתראה.
- כדי לראות התראות על תחזוקה קרובה, מרחיבים את הכותרת
דוגמאות להתראות לגבי פעולות תחזוקה
התראה על אירוע תחזוקה של מכונה מופיעה ב-Logs Explorer עם ערכים שדומים לאלה:
methodName:"compute.instances.upcomingMaintenance"metadata:maintenanceStatus:"PENDING"machineType: "x4-960-16t-metal"windowStartTime:"2024-07-23T20:00:00Z"
כשהאירוע מתחיל, מופיע ביומנים אירוע חדש עם מידע וערכים שדומים לאלה:
methodName:"compute.instances.upcomingMaintenance"metadata:maintenanceStatus:"ONGOING"machineType: "x4-960-16t-metal"windowStartTime:"2024-07-23T20:00:00Z"
במהלך אירוע התחזוקה, בהתאם להגדרת מדיניות התחזוקה של המארח במכונה, אחד מאירועי המערכת הבאים נרשם ביומני הביקורת:
- במכונות שמוגדרות להשתמש במיגרציה פעילה במהלך אירועי תחזוקה, אירוע מערכת עם
methodName: "compute.instances.migrateOnHostMaintenance". - במכונות שמוגדרות להפסיק לפעול במהלך אירועי תחזוקה, אירוע מערכת עם
methodName: "compute.instances.terminateOnHostMaintenance".
כשהאירוע מסתיים, מופיע ביומני הביקורת אירוע חדש עם מידע וערכים שדומים לאלה:
methodName:"compute.instances.upcomingMaintenance"status: {message: "Maintenance window has completed for this instance. Allmaintenance notifications on the instance have been removed."}
הגדרת התראות לגבי פעולות תחזוקה במארח
אפשר להגדיר מדיניות התראות מבוססת-יומן כדי לחפש אירועים ספציפיים של התראות תחזוקה ולשלוח התראות באמצעות ערוץ התראות.
המסוף
כדי ליצור התראה על אירוע תחזוקה במכונה:
נכנסים לדף VM instances.
לוחצים על Name של המכונה שרוצים ליצור לה התראה על אירוע תחזוקה.
הדף Instance details נפתח.
בקטע Logs, לוחצים על הקישור Logging.
הדף עורך השאילתות של Logs Explorer נפתח. בחלונית Query, המזהה של
resource.typeוהמזהה של המכונה כבר מאוכלסים במכונה שלכם.בחלונית Query, מוסיפים את השורה הבאה לשאילתה:
operation.producer="compute.instances.upcomingMaintenance"כדי לסנן אירועי תחזוקה של מארח לפי סוג מכונה במקום לפי מכונה ספציפית, עורכים את השאילתה באופן הבא:
- מסירים את השורה שמציינת את מזהה המכונה.
מוסיפים את השורה הבאה לשאילתה:
protoPayload.metadata.machineType:"MACHINE_TYPE"
מחליפים את
MACHINE_TYPEבסוג המכונה שרוצים לסנן את אירועי התחזוקה של המארח שלה.
לוחצים על Run query. אירועי ההתראות על תחזוקה שתואמים לשאילתה מופיעים בחלונית של תוצאות השאילתה.
בחלונית של תוצאות השאילתה, לוחצים על Edit time.
- בצד ימין של חלון העריכה, בשדה Relative time, מזינים
7dכדי להציג את רשומות היומן מהשבוע האחרון. - לוחצים על אישור.
- בצד ימין של חלון העריכה, בשדה Relative time, מזינים
בכותרת של החלונית Query results, לוחצים על add_alert Create alert. אם חלון התצוגה צר, יכול להיות שהאפשרות Create alert תופיע בתפריט Actions.
בחלונית Create logs-based alert policy, בקטע Alert details:
- נותנים שם למדיניות ההתראות, לדוגמה
Upcoming maintenance for my-c3d-vm@us-central1-b. בתפריט רמת החומרה של המדיניות, בוחרים באפשרות אין חומרה.
בשדה Documentation אפשר להזין תיאור למדיניות ההתראות. אפשר גם לכלול מידע שיכול לעזור לנמען של ההתראה לאבחן את הבעיה. המחרוזת הבאה מסכמת את הסיבה להודעה:
Log-based alerting policy in project ${project} to monitor upcoming maintenance notifications. See also "Host maintenance alerts" and "onHostMaintenance actions" alerting policies.במאמר שימוש ב-Markdown ובמשתנים בתבניות של מסמכי תיעוד מוסבר איך לעצב ולהתאים את התוכן של השדה הזה.
כדי לעבור לשלב הבא, לוחצים על הבא.
- נותנים שם למדיניות ההתראות, לדוגמה
בקטע Choose logs to include in the alert, בודקים את השאילתה והתוצאות בלחיצה על Preview logs.
השאילתה שיצרתם בחלונית Query מוצגת גם בחלונית הזו. מומלץ ליצור קודם את השאילתה בחלונית Query ב-Logs Explorer.
אם צריך, אפשר לערוך את השאילתה בחלונית הזו. אם עורכים את השאילתה, צריך לבדוק את התוצאות בלחיצה על Preview logs.
לוחצים על הבא.
בחלונית Set notification frequency and autoclose duration, מבצעים את הפעולות הבאות:
בוחרים את משך הזמן המינימלי בין ההתראות. הערך הזה מאפשר לכם לשלוט במספר ההתראות שתקבלו מ-Monitoring אם התנאי הזה יתקיים כמה פעמים. בדוגמה הזו, בוחרים באפשרות יום אחד.
בשדה Incident autoclose duration, משתמשים בערך המקסימלי של 7 ימים.
לוחצים על הבא.
אם כבר הגדרתם ערוץ התראות באימייל, אתם יכולים לבחור אותו מהרשימה. אם לא, לוחצים על Manage notification channels ומוסיפים ערוץ אימייל. למידע נוסף על יצירת ערוצי התראות, קראו את המאמר יצירה וניהול של ערוצי התראות.
לוחצים על Save.
מדיניות ההתראה מבוססת-היומן מוכנה לבדיקה, כמו שמתואר בקטע בדיקת מדיניות ההתראה מבוססת-היומן לדוגמה.
למידע נוסף, קראו את המאמרים הגדרת התראות מבוססות-יומן ויצירה וניהול של ערוצי התראות.
המאמרים הבאים
- איך מגדירים מדיניות תחזוקה של מארח
- איך מקבלים התראות על מיגרציה פעילה
- איך מפעילים אירוע תחזוקה של מארח באופן ידני
- במאמר ניהול מדיניות התראות מבוססות-יומנים מוסבר איך משתמשים במסוף Cloud de Confiance ל-Monitoring או ב-Monitoring API.