בדף הזה מוסבר על היומנים שזמינים כשמשתמשים ב-Knative serving, ואיך צופים ביומנים וכותבים אותם.
ב-Knative Serving יש שני סוגים של יומנים:
- יומני בקשות: יומנים של בקשות שנשלחו לשירותים של Knative serving. היומנים האלה נוצרים באופן אוטומטי.
- יומני קונטיינר: יומנים שנוצרים ממופעי הקונטיינר, בדרך כלל מהקוד שלכם, ונכתבים במיקומים נתמכים כפי שמתואר במאמר כתיבת יומני קונטיינר.
הפעלת יומנים
יומני Google Cloud נשלחים אוטומטית אל Cloud Logging. ב-Google Distributed Cloud, קודם צריך להפעיל את היומנים.
צפייה ביומנים
יש כמה דרכים לצפייה ביומנים של השירות:
- בדף Knative serving במסוף Google Cloud
- משתמשים ב-Logs Explorer של Cloud Logging במסוף Google Cloud .
בשתי השיטות האלה מוצגים אותם יומנים שמאוחסנים ב-Cloud Logging, אבל בכלי Logs Explorer של Cloud Logging יש יותר פרטים ויכולות סינון.
צפייה ביומנים במילוי בקשות מסוג Knative
כדי להציג יומנים בדף של Knative serving:
לוחצים על השירות הרצוי ברשימה שמוצגת.
לוחצים על הכרטיסייה LOGS (יומנים) כדי לקבל את יומני הבקשות והמאגרים של כל הגרסאות של השירות הזה. אפשר לסנן לפי רמת החומרה של היומן.
צפייה ביומנים ב-Cloud Logging
כדי לראות את יומני Knative Serving ב-Logs Explorer של Cloud Logging:
נכנסים לדף Logs Explorer במסוףGoogle Cloud .
בוחרים פרויקט קיים Google Cloud בחלק העליון של הדף או יוצרים פרויקט חדש.
בתפריטים הנפתחים, בוחרים את המשאב: Kubernetes Container.
מידע נוסף זמין במאמר שימוש ב-Logs Explorer.
צפייה ביומנים ב-Cloud Code
כדי לראות את היומנים ב-Cloud Code, אפשר לקרוא את המדריכים ל-IntelliJ ול-Visual Studio Code.
קריאת יומנים באופן פרוגרמטי
אם רוצים לקרוא את הרישומים באופן פרוגרמטי, אפשר להשתמש באחת מהשיטות הבאות:
- משתמשים בsink ביומן ל-Pub/Sub ובסקריפט לשליפה מ-Pub/Sub.
- מפעילים את Logging API באמצעות ספריות הלקוח של שפת התכנות שלכם.
- קריאה ישירה לנקודות הקצה של Logging API REST.
כתיבת יומנים של מאגרי תגים
כשכותבים יומנים מהשירות, הם נאספים אוטומטית על ידי Cloud Logging, כל עוד היומנים נכתבים באחד מהמיקומים הבאים:
- זרמי פלט רגיל (
stdout) או שגיאה רגילה (stderr) - syslog (
/dev/log) - יומנים שנכתבו באמצעות ספריות הלקוח של Cloud Logging, שזמינות בשפות פופולריות רבות
רוב המפתחים צפויים לכתוב יומנים באמצעות פלט רגיל ושגיאה רגילה.
היומנים של מאגרי התגים שנכתבים למיקומים הנתמכים האלה משויכים באופן אוטומטי לשירות, לגרסה ולמיקום של Knative serving.
שימוש בטקסט פשוט לעומת JSON מובנה ביומנים
כשכותבים יומנים, אפשר לשלוח מחרוזת טקסט פשוטה או שורה אחת של JSON שעבר סריאליזציה, שנקרא גם נתונים 'מובנים'. הנתונים האלה נאספים ומנותחים על ידי Cloud Logging, ומוצבים ב-jsonPayload. לעומת זאת, הודעת הטקסט הפשוטה ממוקמת ב-textPayload.
כתיבת יומנים מובנים
בקטע הקוד הבא אפשר לראות איך כותבים רשומות מובְנות ביומן. בנוסף, מוסבר איך לבצע קורלציה בין הודעות ביומן לבין יומן הבקשות המתאים.
Node.js
Python
Go
המבנה של כל רשומה ביומן מסופק על ידי סוג Entry:
כשמבצעים רישום ביומן של מבנה Entry, מתבצעת קריאה לשיטה String כדי להמיר אותו לפורמט JSON שצפוי ב-Cloud Logging:
Java
כדי להפעיל רישום בפורמט JSON באמצעות Logback ו-SLF4J, צריך להפעיל את Logstash JSON Encoder בהגדרות של logback.xml.
שדות JSON מיוחדים בהודעות
כשמספקים יומן מובנה כמילון JSON, חלק מהשדות המיוחדים מוסרים מהשדה jsonPayload ונכתבים בשדה המתאים ב-LogEntry שנוצר, כפי שמתואר במסמכי התיעוד בנושא שדות מיוחדים.
לדוגמה, אם קובץ ה-JSON כולל מאפיין severity, הוא יוסר מjsonPayload ויופיע במקום זאת כseverity של רשומת היומן.
המאפיין message משמש כטקסט התצוגה הראשי של רשומת היומן, אם הוא קיים.
מידע נוסף על מאפיינים מיוחדים זמין בקטע משאב רישום ביומן שבהמשך.
התאמה בין יומני מאגר התגים לבין יומן בקשות
בכלי Logs Explorer, יומנים שמשויכים לאותו trace מוצגים בפורמט 'הורה-צאצא': כשלוחצים על סמל המשולש מימין לרשומה ביומן הבקשות, יומני המאגר שקשורים לבקשה הזו מוצגים כרשומות משנה ביומן הבקשות.
יומני קונטיינרים לא משויכים אוטומטית ליומני בקשות, אלא אם משתמשים בספריית לקוח של Cloud Logging.
כדי לבצע קורלציה בין יומני קונטיינרים לבין יומני בקשות בלי להשתמש בספריית לקוח, אפשר להשתמש בשורת יומן JSON מובנית שמכילה שדה logging.googleapis.com/trace עם מזהה המעקב שחולץ מהכותרת X-Cloud-Trace-Context, כמו בדוגמה שלמעלה לרישום מובנה ביומן.
שליטה בשימוש במשאבים ביומן הבקשות
יומני בקשות נוצרים באופן אוטומטי. למרות שאי אפשר לשלוט בכמות של יומני הבקשות ישירות מ-Knative serving, אפשר להשתמש בתכונה החרגת יומנים מ-Cloud Logging.
הערה לגבי רישום נציגים ביומן
אם השתמשתם ב-Cloud Logging עם מוצרים מסוימים, כמו Compute Engine, יכול להיות שהשתמשתם בסוכני רישום ב-Cloud Logging. Google Cloud ב-Knative Serving לא נעשה שימוש בסוכני רישום ביומן כי יש לו תמיכה מובנית באיסוף יומנים.
משאב Logging
כשלוחצים על רשומה ביומן ב-Logs Explorer, נפתחת רשומה ביומן בפורמט JSON, כך שאפשר להגיע לפרטים הרצויים.
כל השדות ברשומה ביומן, כמו חותמות זמן, חומרה וhttpRequest, הם סטנדרטיים ומתוארים במסמכים של רשומה ביומן.
עם זאת, יש תוויות או תוויות משאבים שהן ייחודיות ל-Knative serving. כאן מפורטים כמה סוגים של קבצים עם דוגמאות לתוכן שלהם:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
}
logName: "projects/my-project/logs/kubernetes-engine/enterprise/knative-serving/.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "us-central1"
project_id: "my-project"
revision_name: "myservice-00002"
service_name: "myservice"
}
type: "cloud_run_revision"
}
severity: "INFO"
timestamp: "2019-03-08T18:26:25.970397Z"
}
| שדה | ערכים והערות |
|---|---|
instanceId |
מופע מאגר התגים שטיפל בבקשה. |
logName |
מזהה את היומן, לדוגמה, יומן בקשות, שגיאה רגילה, פלט רגיל וכו'. |
configuration_name |
משאב התצורה שיצר את הגרסה ששימשה להצגת הבקשה. |
location |
מזהה את המיקום של השירות ב-GCP. |
project_id |
הפרויקט שבו השירות נפרס. |
revision_name |
הגרסה ששימשה להצגת הבקשה. |
service_name |
השירות שטיפל בבקשה. |
type |
cloud_run_revision. סוג המשאב של Knative serving. |