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

כל בקשה ל-Cloud CDN מתועדת ב-Cloud Logging. מידע על הפעלה והשבתה של רישום ביומן זמין במאמר סקירה כללית על רישום ביומן ומעקב אחרי מאזן עומסים חיצוני של אפליקציות ו-Cloud CDN.

היומנים של Cloud CDN משויכים למאזן העומסים החיצוני של האפליקציות שאליו מצורפים הקצוות העורפיים של Cloud CDN. היומנים של Cloud CDN עוברים אינדוקס קודם לפי כלל העברה ואז לפי מפת URL.

כדי לראות את היומנים של Cloud CDN, פועלים לפי השלבים הבאים.

המסוף

  1. נכנסים לדף Logs Explorer במסוף Google Cloud .

    כניסה לדף Logs Explorer

  2. בתפריט Resource בוחרים באפשרות Cloud HTTP Load Balancer.
  3. כדי לצפות ביומנים:
    • צפייה בכל היומנים: בוחרים בתפריט Resource ואז באפשרות All forwarding rules.
    • כדי לראות את היומנים של כלל העברה: בוחרים את השם של כלל ההעברה מתוך רשימת כללי ההעברה.
    • כדי לראות את היומנים של מיפוי כתובות URL שמשמש כלל העברה: בוחרים כלל העברה ואז בוחרים מיפוי כתובות URL.

בקשה שמוגשת מהקצה העורפי

כדי לוודא שבקשה מוגשת מקצה עורפי שמופעל בו Cloud CDN, צריך לחפש את שלושת השדות העיקריים הבאים:

  • httpRequest: כשבקשה מוגשת מהקצה העורפי, אפשר לראות שהמטמון מלא ולאשר את כתובת ה-URL של הבקשה.
    • cacheFillBytes: NUMBER_OF_BYTES
    • cacheLookup: True
    • requestURL: URL
  • jsonPayload: בשדה statusDetails אפשר לוודא שהתגובה הגיעה מהקצה העורפי.
    • statusDetails: "response_sent_by_backend"

הבקשה הוגשה מהמטמון

רשומה ביומן שמראה פגיעה במטמון.

 {
    insertId: "1oek5rg3l3fxj7"
    jsonPayload: {
        @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
        cacheId: "SFO-fbae48ad"
        statusDetails: "response_from_cache"
    }
    httpRequest: {
        requestMethod: "GET"
        requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg"
        requestSize: "577"
        status: 304
        responseSize: "157"
        userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
        remoteIp: "CLIENT_IP_ADDRESS"
        cacheHit: true
        cacheLookup: true
    }
    resource: {
        type: "http_load_balancer"
        labels: {
            zone: "global"
            url_map_name: "URL_MAP_NAME"
            forwarding_rule_name: "FORWARDING_RULE_NAME"
            target_proxy_name: "TARGET_PROXY_NAME"
            backend_service_name: ""
            project_id: "PROJECT_ID"
        }
    }
    timestamp: "2020-06-08T23:41:30.078651Z"
    severity: "INFO"
    logName: "projects/PROJECT_ID/logs/requests"
    trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992"
    receiveTimestamp: "2020-06-08T23:41:30.588272510Z"
    spanId: "7b6537d3672e08e1"
}

מה נרשם ביומן

בנוסף למידע כללי שמופיע ברוב היומנים, כמו חומרה, מזהה פרויקט, מספר פרויקט וחותמת זמן, היומנים של מאזן העומסים החיצוני של אפליקציות ושל Cloud CDN כוללים את הפרטים הבאים:

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

  • השדה jsonPayload.cacheId, שמציין את המיקום ואת מופע המטמון שממנו הוגשה תגובת המטמון. לדוגמה, תגובה מהמטמון שמוגשת ממטמון באמסטרדם תכלול את הערך AMS-85e2bd4b של cacheId, כאשר AMS הוא קוד ה-IATA ו-85e2bd4b הוא מזהה אטום של מופע המטמון (כי בחלק מהמיקומים של Cloud CDN יש כמה מטמונים נפרדים).

  • השדות statusDetails ו-cacheDetail של jsonPayload.

אפשר לסנן לפי השדות הבאים כדי לקבוע את סטטוס הפגיעה במטמון, הפספוס או האימות מחדש של בקשה שמוגשת על ידי Cloud CDN:

  • Cache Hit

    jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")

    או

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Cache Hit Validated With Origin Server

    jsonPayload.statusDetails="response_from_cache_validated"

    או

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Cache Miss

    jsonPayload.statusDetails="response_sent_by_backend"

    או

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

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

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

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

כש-Cloud CDN ממלא בקשה של לקוח על ידי הפעלת בקשות אימות או בקשות של טווח בייטים, הוא משמיט את השדה serverIp מרשומת היומן של Cloud Logging עבור בקשת הלקוח. הסיבה לכך היא ש-Cloud CDN יכול לשלוח בקשות לכמה כתובות IP של שרתים בתגובה לבקשה אחת של לקוח.

כל בקשה שמופעלת על ידי Cloud CDN יוצרת רשומה ביומן של Cloud Logging. הרשומה ביומן שמתקבלת מכילה את השדה parentInsertId בתוך jsonPayload. אפשר להשתמש בשדה הזה כדי לזהות את insertId של רשומת היומן עבור בקשת הלקוח היחידה שגרמה ל-Cloud CDN ליזום את בקשת האימות או את בקשת טווח הבייטים. בנוסף, רשומת היומן מזהה את Cloud CDN כסוכן המשתמש.

מעקב אחרי Cloud CDN

‫Cloud CDN מייצא נתוני מעקב ל-Cloud Monitoring. המעקב משמש למעקב אחר התקינות של פריסת Cloud CDN.

‫Cloud Monitoring מספק לוחות בקרה מוגדרים מראש שמופעלים כברירת מחדל, כדי לקבל תובנות מהירות לגבי תקינות המערכת והביצועים שלה. בנוסף, בכלי המעקב יש קבוצה של מרכזי בקרה בהתאמה אישית. ההגדרות של לוחות הבקרה המותאמים אישית האלה זמינות ב-GitHub במאגר הדוגמאות של לוחות בקרה למעקב כקובצי JSON. בספרייה dashboards/networking יש לוח בקרה מותאם אישית ספציפי ל-Cloud CDN בשם cloud-cdn-monitoring.json. כדי להעלות את לוח הבקרה המותאם אישית הזה ל-Monitoring, פועלים לפי ההוראות במאמר התקנת לוחות בקרה לדוגמה.

מרכזי בקרה שהוגדרו מראש

‫Cloud Monitoring מציע מרכזי בקרה מוגדרים מראש ל-Cloud CDN. בלוחות הבקרה האלה מוצגים מדדי מפתח שמאפשרים לכם לעקוב אחרי חלוקת התנועה ויעילות המטמון בלי שתצטרכו לבצע הגדרה ידנית.

הצגת מרכזי בקרה שהוגדרו מראש

כדי לגשת למרכזי הבקרה המוגדרים מראש:

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

    מעבר אל Cloud CDN

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

  3. בדף פרטי המקור, לוחצים על מעקב.

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

מדדים בלוחות הבקרה

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

  • חלוקת התנועה של הלקוח

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

  • מדדים עיקריים

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

    מדדים תיאור
    סה"כ בקשות המספר הכולל של כל בקשות ה-HTTP/HTTPS שעובדו על ידי Cloud CDN, שהוגשו ממטמון או משירות הבק-אנד המקורי. בתרשים מוצג מספר הבקשות לאורך זמן.
    תעבורה יוצאת (egress) של נתוני מטמון הנפח הכולל של הנתונים, בבייט, שמוצגים ממטמוני הקצה של Cloud CDN. בתרשים העמודות מוצג נפח התעבורה היוצאת לאורך זמן.
    יחס השגיאות הכולל אחוז הבקשות שהובילו לקוד סטטוס של שגיאה 4xx או 5xx. המדד הזה הוא אינדיקטור עיקרי של תקינות השירות הכוללת.
    יחס השגיאות 4xx אחוז הבקשות שהובילו לקוד סטטוס בצד הלקוח. אלה קודים מסוג 4xx, כמו 404 Not Found או 403 Forbidden. שגיאות כאלה מצביעות על בעיות בתוכן המבוקש או בהרשאות של הלקוח.
    שיעור השגיאות 5xx אחוז הבקשות שהובילו לקוד סטטוס בצד השרת. אלה קודים מסוג 5xx, כמו 502 Bad Gateway או 503 Service Unavailable. שגיאות כאלה מצביעות על בעיות בשירות המקור של ה-Backend או בהגדרת מאזן העומסים.
    שיעור מציאות במטמון (cache hit) היחס, באחוזים, בין הבקשות שמועברות ישירות מהמטמון של Cloud CDN לבין המספר הכולל של הבקשות.
    סה"כ מילוי מטמון הנפח הכולל של הנתונים, בבייט, שאוחזרו מהקצה העורפי של המקור ואוחסנו במטמון של Cloud CDN.

מרכזי בקרה מותאמים אישית

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

בקשה של מספר הבייטים שחולקו לפי תוצאת מטמון

השאילתה הזו מתמקדת בקצה העורפי שבו מופעל Cloud CDN, וזה נעשה על ידי הכללת cache_result!="DISABLED".

sum by (cache_result) (
 rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m])
)

השהיית TCP הלוך ושוב של לקוח ב-95% עבור יעד ספציפי בעורף השרת

השאילתה הזו כוללת backend_target_name="example-backend", שמצמצמת את התנועה אל ה-backend example-backend. בק-אנד יכול להיות קטגוריה של Cloud Storage, קבוצת מכונות וירטואליות ב-Compute Engine או בק-אנד חיצוני.

histogram_quantile(
 0.95,
 sum by (proxy_continent, le) (
   rate({"loadbalancing.googleapis.com/https/frontend_tcp_rtt_bucket",
     monitored_resource="https_lb_rule",
     backend_target_name="example-backend"
   }[1m])
 )
)

מספר הבקשות לפי סיווג קוד התגובה עבור קצה עורפי עם Cloud CDN

השאילתה הזו מפרטת את התנועה לפי סיווג קוד התגובה (2xx,‏ 3xx,‏ 4xx,‏ 5xx) כדי לעזור להפריד בין הצלחות של לקוחות, שגיאות של לקוחות ושגיאות של שרתים.

sum by (response_code_class) (
 count_over_time(
  {"loadbalancing.googleapis.com/https/request_count",
     monitored_resource="https_lb_rule",
     cache_result!="DISABLED"
   }[1h]
 )
)

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

השאילתה הזו מציגה את התנועה לפי מדינת המוצא, שנקבעת באמצעות כתובות ה-IP של הלקוחות.

sum by (client_country) (
 rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m])
)

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

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

  • מידע על השדות שכלולים ברשומה ביומן httpRequest זמין במאמר HttpRequest.