מידע על רישום ביומן של בדיקת תקינות

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

  • ניפוי באגים בזמן אמת ופתרון בעיות בסטטוס התקינות של נקודת הקצה
  • קבלת תמונה מלאה של סטטוס התקינות של נקודת הקצה
  • למטרות ביקורת ותאימות

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

כדי לראות את יומני בדיקות התקינות ב-Logging, צריך לוודא שאין לכם החרגה של יומנים שחלה על בדיקות התקינות. הוראות לאימות ההרשאות ליומנים של GCE Instance Group ושל Network Endpoint Group מופיעות במאמר בנושא מסנני החרגה.

הפעלה והשבתה של רישום ביומן

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

הפעלת רישום ביומן בבדיקת תקינות חדשה

המסוף

  1. נכנסים לדף Health checks במסוף Google Cloud .

    מעבר אל Health checks

  2. לוחצים על יצירת בדיקת תקינות.

  3. בקטע יומנים, בוחרים באפשרות מופעל.

  4. ממשיכים בהגדרת בדיקת התקינות.

gcloud

gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

הדגל --enable-logging מאפשר רישום ביומן עבור בדיקת התקינות הזו.

Terraform

כדי ליצור בדיקת תקינות לפרוטוקולים שונים עם רישום ביומן, משתמשים במשאב google_compute_health_check.

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

למאזן עומסים אזורי, משתמשים במשאב google_compute_region_health_check.

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

הפעלת רישום ביומן בבדיקת תקינות קיימת

המסוף

  1. נכנסים לדף Health checks במסוף Google Cloud .

    מעבר אל Health checks

  2. לוחצים על השם של בדיקת התקינות.

  3. לוחצים על עריכה.

  4. בקטע יומנים, בוחרים באפשרות מופעל.

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

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

הדגל --enable-logging מאפשר רישום ביומן עבור בדיקת התקינות הזו.

השבתת הרישום ביומן בבדיקת תקינות קיימת

המסוף

  1. נכנסים לדף Health checks במסוף Google Cloud .

    מעבר אל Health checks

  2. לוחצים על השם של בדיקת התקינות.

  3. לוחצים על עריכה.

  4. בקטע יומנים, בוחרים באפשרות מושבת.

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

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --no-enable-logging

הדגל --no-enable-logging משבית את הרישום ביומן של בדיקת התקינות הזו.

צפייה ביומנים

  1. כדי לראות את היומנים, עוברים אל Logs Explorer.

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

  2. כדי לראות את כל היומנים, בתפריט Resource, בוחרים באפשרות GCE Instance Group או Network Endpoint Group, בהתאם לסוג ה-Backend.

  3. אפשרות אחרת היא להדביק את השאילתה הבאה בשדה Query. מחליפים את PROJECT_ID במזהה הפרויקט.

    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
    

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

שימוש במסננים כדי להציג יומנים

אפשר גם לקבל יומנים על סמך חיפושים ספציפיים יותר. לדוגמה, המסנן הבא מציג את כל הרישומים של כתובת IP ספציפית של שרת עורפי (backend instance):

  logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="IP_ADDRESS"

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

קידוד UTF-8 מוגדר כשחובה בשדות של יומן. תווים שאינם תווים בפורמט UTF-8 מוחלפים בסימני שאלה.

מה נרשם ביומן

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

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

מצבים של בדיקת תקינות

נקודת קצה נחשבת HEALTHY או UNHEALTHY. אלה המצבים הבסיסיים. בתוך כל אחד מהמצבים הבסיסיים האלה יש כמה מצבים מפורטים יותר.

ב-NEGs היברידיים וב-NEGs אזוריים לאינטרנט שמשתמשים בבדיקות תקינות מבוזרות של Envoy אין תמיכה במצבי תקינות מפורטים.

בטבלה הבאה מוצג המיפוי בין מצבי תקינות בסיסיים למצבי תקינות מפורטים.

מצב בריאותי בסיסי מצב בריאותי מפורט
HEALTHY HEALTHY
DRAINING
UNHEALTHY UNKNOWN
UNHEALTHY
TIMEOUT

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

  1. השרת נותן את התגובה הלא נכונה, ולכן נקודת הקצה נחשבת לUNHEALTHY.
  2. השרת מפסיק להגיב, והמצב החדש הוא TIMEOUT.
  3. מאזן העומסים עדיין מחשיב את נקודת הקצה כUNHEALTHY כי המיפוי של מצב TIMEOUT המפורט הוא למצב UNHEALTHY הבסיסי.

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

מצב מפורט של בדיקת התקינות משמעות מצב בסיסי
HEALTHY אפשר להגיע לנקודת הקצה והיא עומדת בדרישות שמוגדרות בבדיקת התקינות. HEALTHY
UNHEALTHY אפשר להגיע לנקודת הקצה, אבל היא לא עומדת בדרישות שהוגדרו בבדיקת התקינות. UNHEALTHY
DRAINING הנתונים מנקודת הקצה מועברים. החיבורים הקיימים לנקודת הקצה מורשים להסתיים, אבל החיבורים החדשים נדחים. נקודת הקצה נחשבת HEALTHY. HEALTHY
TIMEOUT אי אפשר להגיע לנקודת הקצה (endpoint). בהתאם לסוג בדיקת תקינות, לא ניתן ליצור חיבור לנקודת הקצה או שהשרת לא הגיב בתוך הזמן הקצוב לתפוגה שצוין. נקודת הקצה נחשבת ל-UNHEALTHY. UNHEALTHY
UNKNOWN מערכת בדיקת התקינות מודעת לנקודת הקצה, אבל לא ידוע אם היא תקינה. נקודת הקצה נחשבת UNHEALTHY. UNHEALTHY

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

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

אם אתם משתמשים בזמן להשלמת תהליך (connection draining), יומני בדיקת תקינות לא יכללו את סטטוס התקינות של נקודת הקצה DRAINING. הסיבה לכך היא שיומני בדיקת התקינות משקפים את התוצאות שנצפו על ידי בקשות לבדיקת תקינות, וזמן להשלמת תהליך (connection draining) לא משפיע על התוצאות שנצפו על ידי בקשה לבדיקת תקינות. התכונה 'זמן להשלמת תהליך (connection draining)' פועלת על ידי עדכון מאזן העומסים שהסטטוס החדש הוא DRAINING, והיא למעשה מבטלת את סטטוס התקינות האמיתי של נקודת הקצה כפי שנצפה על ידי בודק התקינות.

אפשר לבצע פעולות ביומנים באמצעות Cloud Logging API. ממשק ה-API מספק דרכים לסנן באופן אינטראקטיבי יומנים שבהם הוגדרו שדות ספציפיים, ולייצא יומנים תואמים ל-Cloud Logging, ‏ Cloud Storage,‏ BigQuery או Pub/Sub. מידע נוסף על Cloud Logging API זמין בסקירה הכללית על Cloud Logging API.

רשומה ביומן של בדיקת תקינות

השדה jsonPayload של LogEntry מאוכלס במידע הבא.healthCheckProbeResult

שדה סוג תיאור
ipAddress string כתובת ה-IP הפנימית הראשית שמשויכת לממשק הרשת הראשי של כל מכונת קצה עורפי. זו מחרוזת שאנשים יכולים לקרוא.
healthCheckProtocol enum(HealthCheckProtocol) פרוטוקול בדיקת התקינות שמשמש לבדיקת התקינות של נקודת הקצה. דוגמאות: TCP, ‏ HTTP, ‏ HTTPS.
healthState enum(HealthState) הסטטוס הנוכחי של נקודת הקצה: HEALTHY או UNHEALTHY.
previousHealthState enum(HealthState) סטטוס הבריאות הקודם של נקודת הקצה: HEALTHY או UNHEALTHY.
detailedHealthState enum(DetailedHealthState) סטטוס התקינות המפורט הנוכחי של נקודת הקצה. רשימת האפשרויות מופיעה במאמר מצבי בדיקת תקינות.

אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור NEGs היברידיים ו-NEGs אזוריים באינטרנט.

previousDetailedHealthState enum(DetailedHealthState) הסטטוס הקודם המפורט של נקודת הקצה. רשימת האפשרויות מופיעה במאמר מצבי בדיקת תקינות.

אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור NEGs היברידיים ו-NEGs אזוריים באינטרנט.

probeRequest string

ב-HTTP,‏ HTTPS ו-HTTP/2, זהו נתיב הבקשה של כתובת ה-URL (שדה requestPath בהגדרת המשאב).

ב-TCP/SSL, זהו המחרוזת האופציונלית המוגדרת שנשלחת אחרי שנוצר החיבור לבדיקת תקינות (שדה request בהגדרת המשאב).

אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור NEGs היברידיים ו-NEGs אזוריים באינטרנט.

probeCompletionTimestamp google.protobuf.Timestamp חותמת הזמן של השלמת הבדיקה.
connectLatency google.protobuf.Duration הזמן שחלף מהרגע שבו החל ניסיון ההתחברות ועד שהחיבור נוצר בפועל, בפרוטוקולים של בדיקות תקינות מבוססות-חיבור: TCP, ‏ SSL, ‏ HTTP, ‏ HTTPS ו-HTTP/2.

אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור NEGs היברידיים ו-NEGs אזוריים באינטרנט.

responseLatency google.protobuf.Duration זמן האחזור בין הבקשה לתגובה, כפי שנמדד על ידי הכלי לבדיקת קישוריות.

אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור NEGs היברידיים ו-NEGs אזוריים באינטרנט.

probeResultText string טקסט תיאורי שקשור לתוצאת הבקשה לבדיקת תקינות (probe). יכול להיות שיופיעו הודעות כמו "Connection timed out" (החיבור הסתיים בגלל חוסר פעילות) או "HTTP response: Bad Gateway" (תגובת HTTP: שער לא תקין), או שהרשימה תהיה ריקה.

אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור NEGs היברידיים ו-NEGs אזוריים באינטרנט.

probeSourceIp string כתובת ה-IP שממנה נשלחה בקשת בדיקת התקינות.

בבדיקות תקינות מבוזרות של Envoy, הערך הזה תואם לכתובת ה-IP של ה-proxy מתת-הרשת של ה-proxy בלבד.

probeSourceRegion string

האזור ב-Cloud שממנו התבצעה בדיקת התקינות.

השדה הזה מאוכלס רק עבור בדיקות של מדיניות ניתוב ב-Cloud DNS אם השדה sourceRegions מוגדר בבדיקת תקינות התואמת.

targetIp string כתובת ה-IP שהיא היעד של הבדיקה. יכול להיות שהערך יהיה שונה מזה של ipAddress. כתובת ה-IP של היעד של הבדיקה תלויה בסוג מאזן העומסים. פרטים נוספים זמינים בקטע יעד לחבילות בדיקה במאמר בנושא בדיקות תקינות.
targetPort int היציאה שהייתה היעד של הבקשה לבדיקת תקינות. יכול להיות שזו יציאת ברירת המחדל של הבקשה לבדיקת תקינות או היציאה שציינתם כשבניתם את בדיקת התקינות.

דוגמאות למסננים

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

איך מוצאים את כל התוצאות של בדיקות תקינות לקבוצת מופעים מסוימת

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_instance_group" AND
resource.labels.instance_group_name="INSTANCE_GROUP_NAME"

איך מוצאים את כל התוצאות של בדיקת תקינות עבור קבוצת NEG מסוימת

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_network_endpoint_group" AND
resource.labels.network_endpoint_group_id="ENDPOINT_GROUP_ID"

איתור כל המעברים של בדיקות תקינות לכתובת ה-IP של מופע ה-Backend‏ 10.128.15.201

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="10.128.15.201"

איך מוצאים את כל נקודות הקצה שהיו תקינות בעבר אבל עכשיו הן TIMEOUT

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.previousDetailedHealthState="HEALTHY"
jsonPayload.healthCheckProbeResult.detailedHealthState="TIMEOUT"

חיפוש יומני בריאות מטווח זמן ספציפי

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
timestamp>"2019-02-14T02:20:00.0Z"
timestamp<"2019-02-14T03:30:00.0Z"

מגבלות

  • היומנים נוצרים רק למעבר בין מצבי תקינות של נקודות קצה.
  • אין תמיכה בבדיקות תקינות מדור קודם.
  • אין תמיכה במאגרי יעד.
  • יומנים לא נוצרים כשמצב התקינות של נקודת הקצה הוא UNKNOWN.
  • במקרה של העברות מכונות וירטואליות, יכול להיות שלא תראו רשומות ביומן שנוצרו כשמצב התקינות של נקודת הקצה משתנה למצב UNHEALTHY.
  • יומנים לא נוצרים כשמנקודות הקצה נמחקות. לדוגמה, כשמפסיקים מכונה וירטואלית.

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