בדף הזה מוסבר על היומנים שזמינים כשמשתמשים ב-Cloud Run, ואיך צופים ביומנים וכותבים אותם.
ב-Cloud Run יש כמה סוגים של יומנים, והם נשלחים אוטומטית אל Cloud Logging:
- יומני בקשות (שירותים בלבד): יומנים של בקשות שנשלחו לשירותי Cloud Run. היומנים האלה נוצרים באופן אוטומטי.
- יומני מאגרים (כל המשאבים): יומנים שנוצרו מהמופעים, בדרך כלל מהקוד שלכם, שנכתבו במיקומים נתמכים כפי שמתואר במאמר כתיבת יומני מאגרים.
- יומני מערכת (כל המשאבים): יומנים שנוצרו על ידי הפלטפורמה ומכילים מידע על עומסי העבודה. היומנים האלה נכתבים ב-
varlog/system.
צפייה ביומנים
יש כמה דרכים לראות את היומנים של משאב Cloud Run:
- בדף Cloud Run במסוף Cloud de Confiance
- שימוש ב-Cloud Logging
- שימוש ב-Google Cloud CLI כדי להציג יומנים באמצעות gcloud (שירותים בלבד)
שתי השיטות להצגת יומנים במסוף בודקות את אותם יומנים שמאוחסנים ב-Cloud Logging, אבל הכלי Logs Explorer של Cloud Logging מספק יותר פרטים ויכולות סינון.
צפייה ביומנים ב-Cloud Run
אפשר לצפות ביומנים בדף Cloud Run עבור המשאבים הבאים:
שירותים
נכנסים לדף Services של Cloud Run במסוף Cloud de Confiance by S3NS :
לוחצים על השירות ברשימה שמוצגת.
לוחצים על הכרטיסייה Logs כדי לראות את יומני הבקשות והמאגרים של כל הגרסאות של השירות הזה. אפשר לסנן לפי רמת החומרה של היומן.
תעסוקה
כדי לראות את יומני העבודות בדף Cloud Run:
נכנסים לדף Jobs ב-Cloud Run במסוף Cloud de Confiance by S3NS :
מאתרים את המשרה ברשימת המשרות ולוחצים עליה.
לוחצים על הכרטיסייה יומנים כדי לראות את יומני מאגר התגים של כל ההפעלות של העבודה הזו. אפשר לסנן לפי רמת החומרה של היומן.
לחלופין, אם רוצים לראות את היומנים אחרי סינון מראש של ביצוע משימה ספציפית, לוחצים על ביצוע המשימה ואז על הכרטיסייה יומנים.
פורמט ופרטים של יומני שינוי גודל המופע
כשמופעלים מופעים חדשים בשירות Cloud Run, Cloud Logging כולל רשומות ביומן בשם היומן varlog/system שמסבירות למה כל מופע נוצר. הרשומה ביומן מופיעה בפורמט הבא:
Starting new instance. Reason: REASON - DESCRIPTION
בטבלה הבאה מפורטים תיאורי המופעים:
| סיבה | תיאור |
|---|---|
MANUAL_OR_CUSTOMER_MIN_INSTANCE |
המופע הופעל בגלל מופעים מינימליים או שינוי גודל ידני שהוגדרו על ידי הלקוח. |
AUTOSCALING |
המופע הופעל בגלל גורמי קנה מידה שהוגדרו (כמו ניצול CPU, נפח בקשות וכו') או בגלל שלא היה מספיק קיבולת קיימת לתעבורה הנוכחית. |
DEPLOYMENT_ROLLOUT |
המופע הופעל בגלל העברת תנועה בין עדכונים בעקבות פריסה, התאמה של פיצול התנועה או בדיקת תקינות של הפריסה. |
כתיבת יומנים של קונטיינרים
כשכותבים יומנים מהשירות, מהעבודה או ממאגר העובדים, הם נאספים אוטומטית על ידי Cloud Logging, כל עוד היומנים נכתבים באחד מהמיקומים הבאים:
- פלט רגיל (
stdout) או זרמי שגיאה רגילים (stderr) - כל הקבצים בספרייה
/var/log - syslog (
/dev/log) - יומנים שנכתבו באמצעות ספריות הלקוח של Cloud Logging, שזמינות בשפות פופולריות רבות
רוב המפתחים צפויים לכתוב יומנים באמצעות פלט רגיל ושגיאה רגילה.
יומני הקונטיינר שנכתבים במיקומים הנתמכים האלה משויכים אוטומטית לשירות, לגרסה ולמיקום של Cloud Run, למאגר העובדים, לגרסה ולמיקום של Cloud Run, או לעבודת Cloud Run. חריגים שמופיעים ביומנים האלה נרשמים ומדווחים בError Reporting.
הרישום המשולב מאזן בין מהימנות לבין שימוש במשאבים, והוא אמור לפעול ברוב האפליקציות. כתיבת רשומות ביומן באמצעות רישום משולב לא צורכת מכסה של מספר הבקשות entries.write לדקה של Cloud Logging API.
אם האפליקציה שלכם דורשת נפח גדול יותר או אמינות גבוהה יותר, מומלץ להשתמש ישירות ב-Cloud Logging API, כספרייה בתוך האפליקציה או כקובץ sidecar נפרד.
שימוש בטקסט פשוט לעומת JSON מובנה ביומנים
כשכותבים יומנים, אפשר לשלוח מחרוזת טקסט פשוטה או שורה אחת של JSON מסודר, שנקרא גם נתונים 'מובנים'. הנתונים האלה נאספים ומנותחים על ידי Cloud Logging, ומוצבים ב-jsonPayload. לעומת זאת, הודעת הטקסט הפשוטה ממוקמת ב-textPayload.
כתיבת יומנים מובנים
בקטע הקוד הבא אפשר לראות איך כותבים רשומות מובְנות ביומן. בנוסף, מוסבר איך לבצע קורלציה בין הודעות ביומן לבין יומן הבקשות התואם.
Node.js
Python
המשך
המבנה של כל רשומה ביומן מסופק על ידי סוג Entry:
כשמבצעים רישום ביומן של מבנה Entry, מתבצעת קריאה לשיטה String כדי להמיר אותו לפורמט JSON שצפוי ב-Cloud Logging:
Java
כדי להפעיל רישום ביומן בפורמט JSON באמצעות Logback ו-SLF4J, צריך להגדיר את התוסף Logging Logback בהגדרות של logback.xml:
מגדירים את LoggingAppender להפניית יומנים לפלט רגיל (stdout) בפורמט JSON מובנה כדי ש-Cloud Run יתעד אותם. פרטים נוספים מופיעים במאמר בנושא הגדרת Logback.
כך נראה מבנה יומן הפלט:
שדות JSON מיוחדים בהודעות
כשמספקים יומן מובנה כמילון JSON, חלק מהשדות המיוחדים מוסרים מהשדה jsonPayload ונכתבים בשדה המתאים ב-LogEntry שנוצר, כפי שמתואר במסמכי התיעוד בנושא שדות מיוחדים.
לדוגמה, אם קובץ ה-JSON כולל מאפיין severity, הוא יוסר מjsonPayload ויופיע במקום זאת כseverity של רשומת היומן.
המאפיין message משמש כטקסט התצוגה הראשי של רשומת היומן, אם הוא קיים.
מידע נוסף על מאפיינים מיוחדים זמין בקטע משאב רישום ביומן שבהמשך המאמר.
התאמה בין יומני הקונטיינר לבין יומן בקשות (שירותים בלבד)
בכלי Logs Explorer, יומנים שמשויכים לאותו trace מוצגים בפורמט 'הורה-צאצא': כשלוחצים על סמל המשולש מימין לרשומה ביומן הבקשות, יומני המאגר שקשורים לבקשה הזו מוצגים כרשומות משנה ביומן הבקשות.
יומני קונטיינרים לא משויכים אוטומטית ליומני בקשות, אלא אם משתמשים בספריית לקוח של Cloud Logging.
כדי לבצע קורלציה בין יומני קונטיינרים לבין יומני בקשות בלי להשתמש בספריית לקוח, אפשר להשתמש בשורת יומן JSON מובנית שמכילה שדה logging.googleapis.com/trace עם מזהה המעקב שחולץ מהכותרת X-Cloud-Trace-Context, כמו בדוגמה שלמעלה לרישום מובנה ביומן.
שליטה בשימוש במשאבים ביומן הבקשות (שירותים בלבד)
יומני בקשות נוצרים באופן אוטומטי. אי אפשר לשלוט בכמות יומני הבקשות ישירות מ-Cloud Run, אבל אפשר להשתמש בתכונה החרגת יומנים מ-Cloud Logging.
הערה לגבי רישום נציגים ביומן
אם השתמשתם ב-Cloud Logging עם מוצרים מסוימים Cloud de Confiance by S3NS , כמו Compute Engine, יכול להיות שהשתמשתם בסוכני רישום ב-Cloud Logging. ב-Cloud Run לא משתמשים בסוכני רישום ביומן כי יש תמיכה מובנית באיסוף יומנים.
שמות משאבים ב-Logging
שמות המשאבים של Cloud Run ב-Cloud Logging הם:
- Cloud Run Revision (
cloud_run_revision). - Cloud Run Job (
cloud_run_job).
משאבי רישום ביומן
כשלוחצים על רשומה ביומן בכלי Logs Explorer, נפתחת רשומה ביומן בפורמט JSON, כך שאפשר להגיע לפרטים הרצויים.
כל השדות ברשומה ביומן, כמו חותמות זמן, חומרה וhttpRequest, הם סטנדרטיים ומתוארים בתיעוד של רשומה ביומן.
Cloud Run מוסיף מטא-נתונים נוספים, כך שאפשר לזהות את המקור של יומן. זה כולל את (התוויות שהגדרתם בשירות Cloud Run) ואת תוויות המשאבים שספציפיות ל-Cloud Run.
שדות של רשומת יומן לשירות
הרשימה הבאה כוללת שדות שאפשר למצוא ברשומת היומן של שירות Cloud Run:
| שדה | ערכים והערות |
|---|---|
LogEntry.labels.instanceId |
המזהה הזה משויך למופע מסוים בשירות הזה, כשהוא גדל או קטן. |
LogEntry.labels.run.googleapis.com/base_image_versions |
גרסת תמונת הבסיס שבה השירות משתמש. האפשרות הזו מופיעה רק בשירותים שנפרסו ממקור, ורק אם האפשרות עדכוני אבטחה אוטומטיים מופעלת. |
LogEntry.labels.run.googleapis.com/cloud_event_id |
מזהה CloudEvent. האפשרות הזו מופיעה רק בשירותים שמקבלים אירועים מ-Eventarc. |
LogEntry.labels.run.googleapis.com/cloud_event_source |
המקור של CloudEvent. האפשרות הזו מופיעה רק בשירותים שמקבלים אירועים מ-Eventarc. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
התוויות שהגדרתם בשירות. |
LogEntry.logName |
מזהה את היומן, לדוגמה, יומן בקשות, שגיאה רגילה, פלט רגיל וכו'. |
LogEntry.resource.labels.location |
מציין את Cloud de Confiance by S3NS המיקום של השירות. |
LogEntry.resource.labels.project_id |
הפרויקט שבו השירות נפרס. |
LogEntry.resource.labels.revision_name |
הגרסה ששימשה להצגת הבקשה. |
LogEntry.resource.labels.service_name |
השירות שטיפל בבקשה. |
LogEntry.resource.type |
cloud_run_revision. סוג המשאב Cloud Run. |
הנה דוגמה לרשומה ביומן הבקשות של שירות Cloud Run:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
mylabel: "mylabelvalue"
mysecondlabel: "mysecondlabelvalue"
}
logName: "projects/my-project/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "europe-west1"
project_id: "my-project"
revision_name: "myservice-00002"
service_name: "myservice"
}
type: "cloud_run_revision"
}
severity: "INFO"
timestamp: "2019-03-08T18:26:25.970397Z"
}
שדות של רשומות ביומן למשרות
הרשימה הבאה כוללת את השדות שמופיעים ברשומה ביומן של משימת Cloud Run:
| שדה | ערכים והערות |
|---|---|
LogEntry.labels.instanceId |
המזהה הזה ממופה למופע מסוים ששימש להרצת משימה או להרצת עבודה מסוימת. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
התוויות שהגדרתם למשרה. |
LogEntry.logName |
מזהה את היומן, למשל, שגיאה רגילה, פלט רגיל וכו'. |
LogEntry.resource.labels.location |
מזהה את Cloud de Confiance by S3NS מיקום העבודה. |
LogEntry.resource.labels.project_id |
הפרויקט שבו העבודה נפרסת. |
LogEntry.resource.labels.job_name |
שם המשרה. |
LogEntry.labels.execution_name |
השם של הרצת העבודה. |
LogEntry.labels.task_index |
האינדקס של המשימה. |
LogEntry.labels.task_attempt |
כמה פעמים נעשה ניסיון לבצע את המשימה הזו. |
LogEntry.resource.type |
cloud_run_job. סוג המשאב Cloud Run. |