אפשר לקבל יומנים של בדיקות תקינות של איזון עומסים כשנקודת קצה משנה את סטטוס התקינות שלה. אפשר להשתמש ביומני בדיקות תקינות כדי:
- ניפוי באגים בזמן אמת ופתרון בעיות בסטטוס התקינות של נקודת הקצה
- קבלת נראות של סטטוס התקינות של נקודת הקצה
- למטרות ביקורת ותאימות
בדיקות התקינות רושמות ביומן מידע על מעברים בין מצבי תקינות ברישום ביומן. אפשר להפעיל או להשבית את הרישום ביומן לכל בדיקת תקינות בנפרד.
כדי לראות את היומנים של בדיקות התקינות ב-Logging, צריך לוודא שאין לכם החרגה של יומנים שחלה על בדיקות התקינות. הוראות לאימות ההרשאות ליומנים של GCE Instance Group ושל Network Endpoint Group מופיעות במאמר בנושא מסנני החרגה.
הפעלה והשבתה של רישום ביומן
בקטע הזה מוסבר איך להפעיל רישום ביומן בבדיקת תקינות חדשה או קיימת, ואיך להשבית רישום ביומן בבדיקת תקינות קיימת.
הפעלת רישום ביומן בבדיקת תקינות חדשה
המסוף
נכנסים לדף Health checks במסוף Cloud de Confiance .
לוחצים על יצירת בדיקת תקינות.
בקטע יומנים, בוחרים באפשרות מופעל.
ממשיכים בהגדרת בדיקת התקינות.
gcloud
gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
--enable-logging
הדגל --enable-logging מאפשר רישום ביומן של בדיקת התקינות הזו.
Terraform
כדי ליצור בדיקת תקינות לפרוטוקולים שונים עם רישום ביומן, משתמשים במשאב google_compute_health_check.
למאזן עומסים אזורי, משתמשים במשאב google_compute_region_health_check.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
הפעלת רישום ביומן בבדיקת תקינות קיימת
המסוף
נכנסים לדף Health checks במסוף Cloud de Confiance .
לוחצים על השם של בדיקת התקינות.
לוחצים על עריכה.
בקטע יומנים, בוחרים באפשרות מופעל.
לוחצים על Save.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
--enable-logging
הדגל --enable-logging מאפשר רישום ביומן של בדיקת התקינות הזו.
השבתת רישום ביומן בבדיקת תקינות קיימת
המסוף
נכנסים לדף Health checks במסוף Cloud de Confiance .
לוחצים על השם של בדיקת התקינות.
לוחצים על עריכה.
בקטע יומנים, בוחרים באפשרות מושבת.
לוחצים על Save.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
--no-enable-logging
הדגל --no-enable-logging משבית את הרישום ביומן של בדיקת התקינות הזו.
צפייה ביומנים
כדי לראות את היומנים, עוברים אל Logs Explorer.
יומני בדיקת תקינות עוברים אינדוקס לפי קבוצת מופעים או קבוצת נקודות קצה ברשת.
כדי לראות את כל היומנים, בתפריט Resource, בוחרים באפשרות
GCE Instance GroupאוNetwork Endpoint Group, בהתאם לסוג ה-Backend.אפשרות אחרת היא להדביק את השאילתה הבאה בשדה 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 |
HEALTHYDRAINING
|
UNHEALTHY |
UNKNOWNUNHEALTHYTIMEOUT
|
שינויים במצב לא תמיד משנים את ההתנהגות של מאזן העומסים. כדאי להביא בחשבון את המקרה הבא:
- השרת נותן את התגובה הלא נכונה, ולכן נקודת הקצה נחשבת ל
UNHEALTHY. - השרת מפסיק להגיב, והמצב החדש הוא
TIMEOUT. - מאזן העומסים עדיין מחשיב את נקודת הקצה כ
UNHEALTHYכי המיפוי של מצבTIMEOUTהמפורט הוא למצבUNHEALTHYהבסיסי.
בטבלה הבאה מופיעה הגדרה של כל אחד ממצבי התקינות.
| סטטוס מפורט של בדיקת תקינות | משמעות | מצב בסיסי |
|---|---|---|
HEALTHY
|
אפשר להגיע לנקודת הקצה והיא עומדת בדרישות שמוגדרות בבדיקת התקינות. | HEALTHY
|
UNHEALTHY
|
אפשר להגיע לנקודת הקצה, אבל היא לא עומדת בדרישות שמוגדרות בבדיקת התקינות. | UNHEALTHY
|
DRAINING
|
מתבצע ניתוק של נקודת הקצה. החיבורים הקיימים לנקודת הקצה מורשים להסתיים, אבל החיבורים החדשים נדחים. נקודת הקצה
נחשבת HEALTHY.
|
HEALTHY
|
TIMEOUT
|
אי אפשר להגיע לנקודת הקצה (endpoint). בהתאם לסוג בדיקת תקינות, לא ניתן ליצור חיבור לנקודת הקצה או שהשרת לא הגיב בתוך הזמן הקצוב שצוין. נקודת הקצה נחשבת ל-UNHEALTHY.
|
UNHEALTHY
|
UNKNOWN
|
מערכת בדיקת התקינות מודעת לנקודת הקצה, אבל לא ידוע אם היא תקינה. נקודת הקצה נחשבת UNHEALTHY.
|
UNHEALTHY
|
יש כמה בודקי תקינות שבודקים כל נקודת קצה. Cloud de Confiance הם מסירים כפילויות מהערכים ביומן לפני הרישום, כך שרק יומנים ייחודיים נוצרים.
אם בודק תקינות מופעל מחדש, יכול להיות שמדי פעם תראו שהמצב של התקינות שמתועד משתנה מ-UNKNOWN לאחד מהמצבים הידועים שצוינו קודם, למרות שמצב התקינות של נקודת הקצה לא השתנה בפועל. Cloud de Confiance משתמש בהיוריסטיקה של מיטב המאמצים כדי להסתיר רשומות כאלה ביומן.
אם אתם משתמשים בזמן להשלמת תהליך (connection draining), יומני בדיקת תקינות לא יכללו את סטטוס התקינות של נקודת הקצה DRAINING. הסיבה לכך היא שביומני בדיקת התקינות משתקפות התוצאות שנצפו על ידי בקשות לבדיקת תקינות (probes), וזמן להשלמת תהליך (connection draining) לא משפיע על התוצאות שנצפו על ידי בקשה לבדיקת תקינות (probe). התהליך של ניתוק חיבורים מתבצע על ידי עדכון מאזן העומסים שהסטטוס החדש הוא DRAINING, והוא למעשה מבטל את סטטוס התקינות האמיתי של נקודת הקצה כפי שנצפה על ידי בודק התקינות.
אפשר לבצע פעולות ביומנים באמצעות Cloud Logging API. ה-API מספק דרכים לסנן באופן אינטראקטיבי יומנים שבהם הוגדרו שדות ספציפיים, ולייצא יומנים תואמים ל-Cloud Logging, Cloud Storage, BigQuery או Pub/Sub. מידע נוסף על Cloud Logging API זמין בסקירה הכללית על Cloud Logging API.
רשומה ביומן של בדיקת תקינות
השדה LogEntry jsonPayload מאוכלס בשדה 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 (שדה ב-TCP/SSL, זהו המחרוזת האופציונלית המוגדרת שנשלחת אחרי שנוצר החיבור לבדיקת תקינות (שדה אין תמיכה בבדיקות תקינות מבוזרות של 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 |
טקסט תיאורי שקשור לתוצאת הבדיקה. יכול להיות שיופיעו הודעות כמו "Connection timed out" (החיבור הסתיים בגלל חוסר פעילות) או "HTTP response: Bad Gateway" (תגובת HTTP: שער לא תקין), או שהרשימה תהיה ריקה.
אין תמיכה בבדיקות תקינות מבוזרות של Envoy עבור קבוצות NEGs היברידיות וקבוצות NEGs אזוריות באינטרנט. |
probeSourceIp |
string |
כתובת ה-IP שממנה נשלח הפינג לבדיקת תקינות.
בבדיקות תקינות מבוזרות של Envoy, הערך הזה תואם לכתובת ה-IP של ה-proxy מתת-הרשת של ה-proxy בלבד. |
probeSourceRegion |
string |
האזור ב-Cloud שממנו יצאה בדיקת התקינות. השדה הזה מאוכלס רק עבור בדיקות של מדיניות הניתוב של Cloud DNS אם השדה |
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 instance) 10.128.15.201
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" jsonPayload.healthCheckProbeResult.ipAddress="10.128.15.201"
איך מוצאים את כל נקודות הקצה שהיו בעבר תקינות אבל עכשיו הן לא תקינות בגלל פסק זמן
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. - יומנים לא נוצרים כשמנקודות קצה נמחקות. לדוגמה, כשמפסיקים מכונה וירטואלית.
המאמרים הבאים
- מידע על בדיקות תקינות
- יוצרים בדיקת תקינות.
- מידע נוסף על רישום ביומן