מעקב ותכנון לקראת אירוע תחזוקה של מארח

כל מופע של מכונה וירטואלית (VM) או מופע של שרת Bare Metal משתמש במדיניות תחזוקת המארח כדי לקבוע את אופן הפעולה של המופע במהלך פעולת תחזוקה. במקרים מסוימים, יש אפשרות נוספת לצפייה בלוח הזמנים של התחזוקה מראש.

בדף הזה מוסבר איך לעקוב אחרי אירוע תחזוקה של מארח במכונות Compute Engine, ואיך לתכנן את האירוע.

לפני שמתחילים

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל.
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות ליצירת מכונות ולניהול תחזוקה של מכונות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות ליצירת מכונות ולניהול תחזוקה של מכונות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי ליצור מכונות ולנהל את התחזוקה שלהן, צריך את ההרשאות הבאות:

  • כדי לקבל מידע על מופע, כולל מטא-נתונים: compute.instances.get

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מגבלות

אפשר לראות התראות על אירוע תחזוקה קרוב של מופע רק אם המופע משתמש בסוג מכונה מאחת ממשפחות המכונות הבאות:

סקירה כללית על התראות לגבי פעולות תחזוקה

‫Google שולחת התראות על תחזוקת המארח הקרובה בכמה שיטות. כשחלון הזמן לתחזוקה נפתח, Google Cloud מבצע באופן אוטומטי את התחזוקה במכונה. מעקב אחרי חלונות הזמן לתחזוקה הקרובים של המכונה מאפשר לכם להכין את עומסי העבודה מראש כדי להתמודד עם תחזוקה קרובה עם מינימום שיבושים.

למכונות Compute שנתמכות בהתראות על אירועי תחזוקה יש את המאפיינים הבאים:

  • פחות אירועי תחזוקה: באופן כללי, במכונות עם מרווחי תחזוקה חוזרים אמורים להיות פחות אירועי תחזוקה.
  • התראה מוקדמת על תחזוקה: קבלת התראה מוקדמת על אירועי תחזוקה לצורכי תכנון.
  • מעקב ותכנון: אפשר להשתמש ב-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 ימים מראש לרוב המכונות, ולמכונות X4 מקבלים התראה של כ-60 ימים מראש.
    • ‫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: השם של מכונת ה-Compute.
  • ‫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.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_NAME: שם הפרויקט שמכיל את המכונה של Compute Engine.
  • ‫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 וLogs Explorer.

המסוף

כדי לשלוח שאילתה ליומני הביקורת לגבי התראות על תחזוקה של מופע, מבצעים את השלבים הבאים:

  1. נכנסים לדף VM instances.

    כניסה לדף VM instances

  2. לוחצים על Name של המכונה שרוצים לראות את התראות התחזוקה שלה.

    ייפתח הדף Instance details (פרטי המופע).

  3. בקטע Logs (יומנים), לוחצים על הקישור Logging (רישום ביומן).

    הדף עורך השאילתות של Logs Explorer נפתח. בחלונית Query, הערכים של resource.type ומזהה המכונה כבר מאוכלסים במכונה שלכם.

  4. בחלונית Query, מוסיפים את השורה הבאה לשאילתה:

    operation.producer="compute.instances.upcomingMaintenance" OR
    "compute.instances.terminateOnHostMaintenance" OR
    "compute.instances.migrateOnHostMaintenance"
    
  5. לוחצים על Run query. אירועי ההתראה על תחזוקה שמתאימים לשאילתה מופיעים בחלונית של תוצאות השאילתה.

    בחלונית של תוצאות השאילתה אפשר ללחוץ על עריכת טווח הזמן כדי להרחיב את טווח הזמן של החיפוש, או לצמצם את התוצאות לתאריכים או לשעות ספציפיים.

  6. לוחצים על רשומה ביומן כדי לראות את פרטי ההתראה על התחזוקה.

    1. כדי לראות התראות על תחזוקה קרובה, מרחיבים את הכותרת metadata ורואים מידע כמו הסטטוס הנוכחי, הסוג ושעות ההתחלה והסיום של חלון הזמן לתחזוקה.
    2. מרחיבים את הכותרת 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. All maintenance notifications on the instance have been removed." }

הגדרת התראות לגבי הודעות על תחזוקת המארח

אפשר להגדיר מדיניות התראות שמבוססת על יומנים כדי לחפש אירועים ספציפיים של התראות על תחזוקה ולשלוח התראות באמצעות ערוץ התראות.

המסוף

כדי ליצור התראה על אירוע תחזוקה במכונה:

  1. נכנסים לדף VM instances.

    כניסה לדף VM instances

  2. לוחצים על Name (שם) של המכונה שרוצים ליצור עבורה התראה על אירוע תחזוקה.

    הדף Instance details נפתח.

  3. בקטע Logs (יומנים), לוחצים על הקישור Logging (רישום ביומן).

    הדף עורך השאילתות של Logs Explorer נפתח. בחלונית Query, הערכים של resource.type ומזהה המכונה כבר מאוכלסים במכונה שלכם.

  4. בחלונית Query, מוסיפים את השורה הבאה לשאילתה:

    operation.producer="compute.instances.upcomingMaintenance"
    

    כדי לסנן אירועי תחזוקה של מארחים לפי סוג מכונה במקום לפי מופע ספציפי, עורכים את השאילתה באופן הבא:

    1. מסירים את השורה שמציינת את מזהה המכונה.
    2. מוסיפים את השורה הבאה לשאילתה:

      protoPayload.metadata.machineType:"MACHINE_TYPE"

      מחליפים את MACHINE_TYPE בסוג המכונה שרוצים לסנן את אירועי התחזוקה של המארח.

  5. לוחצים על Run query. אירועי ההתראה על תחזוקה שמתאימים לשאילתה מופיעים בחלונית של תוצאות השאילתה.

  6. בחלונית של תוצאות השאילתה, לוחצים על Edit time.

    1. בצד ימין של חלון העריכה, בשדה זמן יחסי, מזינים 1d כדי לראות את רשומות היומן של השבוע האחרון.
    2. לוחצים על אישור.
  7. בכותרת של החלונית Query results, לוחצים על  Create alert. אם חלון הצפייה צר, יכול להיות שהאפשרות יצירת התראה תופיע בתפריט פעולות.

  8. בקטע פרטי התראה שבחלונית יצירת מדיניות התראות מבוססת יומנים:

    1. מזינים שם למדיניות ההתראה, למשל Upcoming maintenance for my-c3d-vm@us-central1-b.
    2. בתפריט רמת החומרה של המדיניות, בוחרים באפשרות ללא חומרה.

    3. בשדה Documentation, אפשר להזין תיאור למדיניות ההתראות. אפשר גם לכלול מידע שיעזור למקבל ההתראה לאבחן את הבעיה. המחרוזת הבאה מסכמת את הסיבה להודעה:

      Log-based alerting policy in project ${project} to monitor upcoming
      maintenance notifications. See also "Host maintenance alerts" and
      "onHostMaintenance actions" alerting policies.
      

      במאמר שימוש ב-Markdown ובמשתנים בתבניות של מסמכים מוסבר איך לעצב את התוכן בשדה הזה ולהתאים אותו אישית.

    4. כדי לעבור לשלב הבא, לוחצים על הבא.

  9. בקטע Choose logs to include in the alert, בודקים את השאילתה והתוצאות בלחיצה על Preview logs.

    השאילתה שיצרתם בחלונית Query מוצגת גם בחלונית הזו. מומלץ ליצור את השאילתה קודם בחלונית Query ב-Logs Explorer.

    במקרה הצורך, אפשר לערוך את השאילתה בחלונית הזו. אם עורכים את השאילתה, לוחצים על תצוגה מקדימה של היומנים כדי לבדוק את התוצאות.

  10. לוחצים על הבא.

  11. בחלונית הגדרת תדירות ההתראות ומשך הזמן לסגירה אוטומטית, מבצעים את הפעולות הבאות:

    1. בוחרים את הזמן המינימלי בין ההתראות. הערך הזה מאפשר לכם לשלוט במספר ההתראות שתקבלו מ-Monitoring אם התנאי הזה יתקיים כמה פעמים. בדוגמה הזו, בוחרים באפשרות יום אחד.

    2. במקרה של Incident autoclose duration, צריך להשתמש בערך המקסימלי של 7 ימים.

    3. לוחצים על הבא.

  12. אם כבר הגדרתם ערוץ התראות באימייל, תוכלו לבחור אותו מהרשימה. אם לא, לוחצים על Manage notification channels ומוסיפים ערוץ אימייל. למידע נוסף על יצירת ערוצי התראות, קראו את המאמר יצירה וניהול של ערוצי התראות.

  13. לוחצים על Save.

    עכשיו אפשר לבדוק את מדיניות ההתראות מבוססת-היומן, כמו שמתואר במאמר בנושא בדיקת מדיניות ההתראות מבוססת-היומן לדוגמה.

מידע נוסף זמין במאמרים בנושא הגדרת התראות שמבוססות על יומנים ויצירה וניהול של ערוצי התראות.

המאמרים הבאים