בדף הזה מוסבר על היומנים שזמינים כשמשתמשים ב-Cloud Run, ואיך צופים ביומנים וכותבים אותם.
ב-Cloud Run יש כמה סוגים של יומנים, והם נשלחים אוטומטית אל Cloud Logging:
- יומני בקשות (שירותים בלבד): יומנים של בקשות שנשלחו לשירותי Cloud Run. היומנים האלה נוצרים באופן אוטומטי.
- יומני קונטיינרים (שירותים, משימות ומאגרי עובדים): יומנים שנוצרים מהמופעים, בדרך כלל מהקוד שלכם, ונכתבים במיקומים נתמכים כמו שמתואר במאמר כתיבת יומני קונטיינרים.
- יומני מערכת (שירותים, משימות ומאגרי עובדים): יומנים שנוצרו על ידי הפלטפורמה ומכילים מידע על עומסי העבודה שלכם. היומנים האלה נכתבים ב-
varlog/system.
צפייה ביומנים
יש כמה דרכים להצגת היומנים של השירות, העבודה או מאגר העובדים:
- בדף Cloud Run במסוף Google Cloud
- שימוש ב-Google Cloud CLI כדי להציג יומנים באמצעות gcloud (שירותים בלבד)
שתי השיטות לצפייה ביומנים במסוף בודקות את אותם יומנים שמאוחסנים ב-Cloud Logging, אבל הכלי Logs Explorer של Cloud Logging מספק יותר פרטים ויכולות סינון.
צפייה ביומנים ב-Cloud Run
אפשר לצפות ביומנים בדף Cloud Run עבור המשאבים הבאים:
צפייה ביומנים של שירות
נכנסים לדף Services של Cloud Run במסוף Google Cloud :
לוחצים על השירות ברשימה שמוצגת.
לוחצים על הכרטיסייה Logs כדי לראות את יומני הבקשות והמאגרים של כל הגרסאות של השירות הזה. אפשר לסנן לפי רמת החומרה של היומן.
צפייה ביומנים של משימה
כדי לראות את יומני העבודות בדף Cloud Run:
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
מאתרים את המשרה ברשימת המשרות ולוחצים עליה.
לוחצים על הכרטיסייה יומנים כדי לראות את יומני מאגר התגים של כל ההפעלות של העבודה הזו. אפשר לסנן לפי רמת החומרה של היומן.
לחלופין, אם רוצים לראות את היומנים אחרי סינון מראש של ביצוע של משימה ספציפית, לוחצים על ביצוע המשימה ואז על הכרטיסייה יומנים.
צפייה ביומנים של מאגר עובדים
כדי לראות את היומנים של מאגר העובדים בדף Cloud Run:
במסוף Google Cloud , נכנסים לדף Worker pools של Cloud Run:
לוחצים על מאגר העובדים ברשימה שמוצגת.
לוחצים על הכרטיסייה Logs (יומנים) כדי לקבל את יומני הבקשות והקונטיינרים של כל הגרסאות של מאגר העובדים הזה. אפשר לסנן לפי רמת החומרה של היומן.
צפייה ביומני שירות באמצעות Google Cloud CLI
אתם יכולים להשתמש ב-Google Cloud CLI כדי להציג יומנים בזמן אמת או לקרוא יומנים קיימים של שירות Cloud Run בשורת הפקודה. כברירת מחדל, היומנים מעוצבים בפורמט של שורה אחת שממוטב לקונסולה.
כדי להציג את סוף הקובץ של יומנים, צריך להתקין את הרכיב log-streaming ב-Google Cloud CLI. אם הרכיב לא מותקן, תתבקשו להתקין אותו כשיהיה צורך.
צפייה ביומנים בשורת הפקודה
בשביל שירות Cloud Run, אפשר לעקוב אחרי יומנים בזמן אמת משירות Cloud Run ישירות בשורת הפקודה:
gcloud beta run services logs tail SERVICE --project PROJECT-ID
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- PROJECT-ID: מזהה הפרויקט ב- Google Cloud . כדי לראות את מזהה הפרויקט, מריצים את הפקודה
gcloud config get-value project.
קריאת יומנים בשורת הפקודה
בשביל שירות של Cloud Run, אפשר לקרוא יומנים קיימים באחת משתי דרכים:
- בפורמט שעבר אופטימיזציה לקונסולה:
gcloud run services logs read SERVICE --limit=10 --project PROJECT-ID
- ישירות מ-Cloud Logging:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE" --project PROJECT-ID --limit 10
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- PROJECT-ID: מזהה הפרויקט ב- Google Cloud . כדי לראות את מזהה הפרויקט, מריצים את הפקודה
gcloud config get-value project.
צפייה ביומנים ב-Cloud Logging
כדי לראות את היומנים של Cloud Run ב-Logs Explorer ב-Cloud Logging:
נכנסים לדף Logs Explorer במסוףGoogle Cloud :
בוחרים פרויקט קיים Google Cloud בחלק העליון של הדף, או יוצרים פרויקט חדש.
בתפריטים הנפתחים, בוחרים את המשאב:
- גרסת Cloud Run של שירות
- משימה ב-Cloud Run למשימה
- מאגר עובדים ב-Cloud Run בשביל מאגר עובדים
מידע נוסף זמין במאמר שימוש ב-Logs Explorer.
הצגת יומני שירות ב-Cloud Code
כדי לראות את היומנים ב-Cloud Code, אפשר לקרוא את המדריכים ל-IntelliJ ול-Visual Studio Code.
קריאת יומנים באופן פרוגרמטי
אם רוצים לקרוא את היומנים באופן פרוגרמטי, אפשר להשתמש באחת מהשיטות הבאות:
- משתמשים בsink ביומן ל-Pub/Sub ובסקריפט לשליפה מ-Pub/Sub.
- מפעילים את Logging API באמצעות ספריות הלקוח של שפת התכנות שלכם.
- קריאה ישירה לנקודות הקצה של Logging API בארכיטקטורת REST.
פורמט ופרטים של יומני שינוי גודל המופע
כשמופעלים מופעים חדשים בשירות 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 עם מוצרים מסוימים, כמו Compute Engine, יכול להיות שהשתמשתם בסוכני רישום ב-Cloud Logging. Google Cloud ב-Cloud Run לא משתמשים בסוכני רישום ביומן כי יש תמיכה מובנית באיסוף יומנים.
שמות משאבים ב-Logging
שמות המשאבים של Cloud Run ב-Cloud Logging הם:
- Cloud Run Revision (
cloud_run_revision). - Cloud Run Job (
cloud_run_job).
- Cloud Run Worker Pool (
cloud_run_workerpool).
משאבי Logging
כשלוחצים על רשומה ביומן בכלי 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 |
מזהה את המיקום של השירות ב-Google Cloud. |
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 | מזהה את Google Cloud מיקום העבודה. |
| 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.
|
שדות של רשומות ביומן למאגרי כוח עבודה
זו רשימה של שדות שאפשר למצוא ברשומה ביומן של מאגר עובדים ב-Cloud Run:
| שדה | ערכים והערות |
| LogEntry.labels.instanceId | המופע. |
| LogEntry.labels.mylabel,
LogEntry.labels.mysecondlabel |
התוויות שהגדרתם במאגר העובדים. |
| LogEntry.logName | מזהה את היומן, למשל, שגיאה רגילה, פלט רגיל וכו'. |
| LogEntry.resource.labels.location | Google Cloud המיקום של מאגר העובדים. |
| LogEntry.resource.labels.project_id | הפרויקט שבו נפרס מאגר העובדים. |
| LogEntry.resource.labels.workerpool_name | השם של מאגר העובדים. |
| LogEntry.resource.type | cloud_run_workerpool. סוג המשאב ב-Cloud Run.
|
המאמרים הבאים
- אתם יכולים להשתמש ב-Gemini Cloud Assist Investigations כדי לאבחן בעיות, לקבל תובנות פרקטיות ולפתור בעיות. מידע נוסף על דרכים שונות להתחלת חקירה באמצעות Logs Explorer מופיע במאמר פתרון בעיות באמצעות Gemini Cloud Assist Investigations במסמכי Gemini.