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

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

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

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

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

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

    המסוף

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

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

    ייפתח הדף 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. בחלונית 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. במקרה של Incident autoclose duration, צריך להשתמש בערך המקסימלי של 7 ימים.

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

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

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

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

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

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