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

כל מכונה וירטואלית (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.
  • 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.

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

כדי לבדוק אם יש אירוע תחזוקה קרוב של המארח עבור המופע, אפשר להשתמש ב-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.
  • 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. לוחצים על שם המופע שרוצים לראות את ההתראות על התחזוקה שלו.

    ייפתח הדף פרטי המופע.

  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 (שם) של המכונה שעבורה רוצים ליצור התראה על אירוע תחזוקה.

    ייפתח הדף פרטי המופע.

  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. בחלונית Create logs-based alert policy, בקטע Alert details, מבצעים את הפעולות הבאות:

    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. בקטע משך הזמן לסגירה אוטומטית של אירוע, משתמשים בערך המקסימלי של 7 ימים.

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

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

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

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

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

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