במאמר הזה מוסבר איך למצוא רשומות ביומן שניתבו מ-Cloud Logging אל נושאי Pub/Sub, וזה קורה כמעט בזמן אמת. מומלץ להשתמש ב-Pub/Sub לשילוב יומנים של Cloud Logging עם תוכנה של צד שלישי.
כשמנתבים רשומות ביומן לנושא Pub/Sub, שירות Logging מפרסם כל רשומה ביומן כהודעת Pub/Sub ברגע שהוא מקבל את הרשומה. רשומות ביומן שמועברות לניתוב זמינות בדרך כלל תוך שניות מרגע ההגעה שלהן ל-Logging, כאשר 99% מהרשומות ביומן זמינות תוך פחות מ-60 שניות.
לפני שמתחילים
הסבר על המושגים שקשורים לאובייקטים מסוג sink מופיע במאמר סקירה כללית על מודלים של ניתוב ואחסון: אובייקטים מסוג sink.
הוראות לגבי ניתוב רשומות ביומן מופיעות במאמר ניתוב יומנים ליעדים נתמכים.
צפייה ביומנים
כדי לראות את היומנים בזמן שהם מועברים בסטרימינג דרך Pub/Sub: פועלים לפי השלבים הבאים:
-
נכנסים לדף Topics במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Pub/Sub.
מחפשים או יוצרים מינוי לנושא שמשמש את sink ביומן, ושולפים ממנו רשומה ביומן. יכול להיות שתצטרכו לחכות עד שיופיע רשומה חדשה ביומן.
ארגון היומנים
השדה data של כל הודעה הוא אובייקט LogEntry בקידוד Base64.
לדוגמה, אפליקציה רשומה ב-Pub/Sub עשויה לשלוף את האובייקט הבא מנושא שמקבל רשומות ביומן.
האובייקט שמוצג מכיל רשימה עם הודעה אחת, אבל יכול להיות שמערכת Pub/Sub תחזיר כמה הודעות אם יש כמה רשומות ביומן.
כדי שהדוגמה תהיה קלה יותר לקריאה, קיצרנו את הערך data (כ-600 תווים) ואת הערך ackId (כ-200 תווים):
{
"receivedMessages": [
{
"ackId": "dR1JHlAbEGEIBERNK0EPKVgUWQYyODM...QlVWBwY9HFELH3cOAjYYFlcGICIjIg",
"message": {
"data": "eyJtZXRhZGF0YSI6eyJzZXZ0eSI6Il...Dk0OTU2G9nIjoiaGVsbG93b3JsZC5sb2cifQ==",
"attributes": {
"compute.googleapis.com/resource_type": "instance",
"compute.googleapis.com/resource_id": "123456"
},
"messageId": "43913662360"
}
}
]
}אם מפענחים את השדה data ומעצבים אותו, מקבלים את אובייקט LogEntry הבא:
{
"log": "helloworld.log",
"insertId": "2015-04-15|11:41:00.577447-07|10.52.166.198|-1694494956",
"textPayload": "Wed Apr 15 20:40:51 CEST 2015 Hello, world!",
"timestamp": "2015-04-15T18:40:56Z",
"labels": {
"compute.googleapis.com\/resource_type": "instance",
"compute.googleapis.com\/resource_id": "123456"
},
"severity": "WARNING"
}
}מגבלה
השדה LogEntry.errorGroups לא זמין ביעד הזה.
יעדי יומן מעבירים את רשומות היומן שנשלחות לפרויקט, אבל רשומות היומן האלה לא מכילות קבוצות שגיאות.
שילוב עם צד שלישי באמצעות Pub/Sub
אתם מעבירים את רשומות היומן לנושא Pub/Sub. הצד השלישי מקבל את רשומות היומן שלכם על ידי הרשמה לאותו נושא. התכונה 'רישום ביומן' תומכת בשילוב של רישום ביומן עם צדדים שלישיים, כמו Splunk או Datadog. רשימה עדכנית של השילובים זמינה במאמר שותפים בנושא שילובים עם Google Cloud Observability.
כדי לבצע את השילוב, צריך לבצע פעולות כמו אלה:
בפרויקט שממנו מגיעים רשומות היומן, יוצרים נושא Pub/Sub עם מינוי ברירת מחדל:
מפעילים את Pub/Sub API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים-
נכנסים לדף Topics במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Pub/Sub.
לוחצים על יצירת נושא.
בשדה Topic ID (מזהה הנושא), מזינים מזהה לנושא. לדוגמה,
projects/my-project-id/topics/my-pubsub-topic.כל הודעה שנשלחת לנושא כוללת את חותמת הזמן של רשומת היומן שהועברה בהודעת Pub/Sub
attributes. לדוגמה:"attributes": { "logging.googleapis.com/timestamp": "2024-07-01T00:00:00Z" }משאירים את האפשרות הוספת מינוי ברירת מחדל. לא בוחרים באף אפשרות אחרת.
לוחצים על יצירת נושא.
בפרויקט שממנו מגיעות רשומות היומן, מגדירים את Logging כדי לנתב את רשומות היומן לנושא:
-
במסוף Google Cloud , עוברים לדף Log Router:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
- לוחצים על Create Sink (יצירת יעד), מזינים שם ותיאור ליעד ולוחצים על Next (הבא).
- בתפריט Sink Service, בוחרים באפשרות Cloud Pub/Sub topic, בוחרים את נושא ה-Pub/Sub ולוחצים על Next.
- בוחרים את רשומות היומן שרוצים לכלול ב-sink ולוחצים על הבא.
- אופציונלי: בוחרים את רשומות היומן שרוצים להחריג.
לוחצים על Create Sink.
מופיעה תיבת דו-שיח עם ההודעה Sink created (יעד נוצר). ההודעה הזו מציינת שהיעד נוצר בהצלחה עם הרשאות להעברת רשומות עתידיות ביומן שתואמות ליעד שבחרתם.
נותנים לחשבון המשתמש שצוין בזהות הכתיבה של יעד הנתונים את תפקידי ה-IAM הבאים:
Logs Writer (
roles/logging.logWriter)Pub/Sub Publisher (
roles/pubsub.publisher)
מידע נוסף על קבלת זהות הכותב והקצאת תפקיד זמין במאמר בנושא הגדרת הרשאות יעד.
Cloud Logging שולח עכשיו רשומות ביומן לנושא Pub/Sub.
-
יוצרים את המינוי.
לדוגמה, אם אתם משתמשים ב-Dataflow כדי לשלוף את הנתונים מנושא Pub/Sub ולשלוח אותם אל Datadog, תצטרכו לבצע שני שלבים:
יוצרים או מקבלים חשבון שירות, ואז מקצים לו את תפקידי ה-IAM שנדרשים להרשמה לנושא. לפחות, חשבון השירות צריך את התפקידים הבאים:
- Pub/Sub Subscriber (
roles/pubsub.subscriber) - אדמין של Dataflow (
roles/dataflow.admin) - Dataflow Worker (
roles/dataflow.worker)
מידע נוסף זמין במאמרים הבאים:
- Pub/Sub Subscriber (
יוצרים משימה מתבנית ואז מריצים את המשימה. בדוגמה הזו, צריך להשתמש בתבנית Pub/Sub to Datadog.
הצד השלישי אמור להתחיל לקבל את רשומות היומן באופן מיידי.
במאמר תרחישים לייצוא של נתוני Cloud Logging: Splunk מוסבר על תרחישים נפוצים של ניתוב יומנים באמצעות Pub/Sub.
פתרון בעיות
אם נראה שחסרים רשומות ביומן ביעד של ה-sink, או אם יש לכם חשד אחר שה-sink לא מעביר את הרשומות ביומן כמו שצריך, כדאי לעיין במאמר פתרון בעיות שקשורות לניתוב יומנים.
תמחור
למידע על מחירים, אפשר לעיין בדף תמחור של Google Cloud Observability. אם אתם מעבירים נתוני יומן לשירותים אחרים, כדאי לעיין במסמכים הבאים: Google Cloud