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

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

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

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

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

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

    המסוף

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

    gcloud

    1. התקינו את ה-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.instances.get

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

מגבלות

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

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

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

למכונות 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 ימים לפחות לגבי רוב המכונות.
    • 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.s3nsapis.fr/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.

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

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

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