ניתוב יומנים ליעדים נתמכים

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

רכיב היעד מבצע פעולת כתיבה, ולכן צריך לאשר לו לכתוב ליעד. אם היעד הוא מאגר יומנים באותו פרויקט שבו נמצאת ההפניה, ההפניה מקבלת הרשאה באופן אוטומטי. בכל שאר היעדים, צריך לצרף את יעד הנתונים לחשבון שירות שקיבל את ההרשאות הנדרשות לכתיבת נתונים ביעד.

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

סקירה כללית

במאמר הזה מוסבר איך ליצור יעד לניקוז נתונים ואיך להגדיר את האפשרויות שמוצגות כשמשתמשים במסוף Google Cloud , ב-Google Cloud CLI או ב-API.

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

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

כדי ליצור ולנהל יעד ליומנים, אפשר להשתמש במסוף Google Cloud , ב-Cloud Logging API וב-Google Cloud CLI. מומלץ להשתמש במסוף Google Cloud מהסיבות הבאות:

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

מומלץ לבדוק את ההגדרה של sink ביומן כשמבצעים שינויים באחסון היומנים. לדוגמה, אם מוחקים את היעד של sink ביומן, צריך למחוק גם את sink ביומן התואם.

בקטע ניהול אובייקטים מסוג sink ביומן במסמך הזה מוסבר איך לראות את אובייקטים מסוג sink ביומן ולנהל אותם.

יעדים נתמכים

יעד של מאגר יכול להיות במשאב אחר מהמאגר. לדוגמה, אפשר להשתמש ב-sink ביומן כדי להעביר רשומות ביומן מפרויקט אחד לקטגוריה ביומן שמאוחסנת בפרויקט אחר.

היעדים הבאים נתמכים:

פרויקטGoogle Cloud

בוחרים ביעד הזה כשרוצים שהיעדים של יומני הבקרה בפרויקט היעד ינתבו מחדש את רשומות היומן, או כשיוצרים יעד צבירה שחוסם את הרשומות. ה-log sinks בפרויקט היעד יכולים לנתב מחדש את רשומות היומן לכל יעד נתמך, למעט פרויקט.

מאגרי ה-sink ביומן שנוצרו על ידי המערכת בפרויקט היעד לא כוללים רשומות ביומן שמנותבות לקטגוריה ביומן _Required בפרויקט המקור. לדוגמה, אם מעבירים יומנים של יומן פעילות אדמין לפרויקט אחר, גם _Required וגם _Default ב-sink ביומן בפרויקט היעד לא יכללו את הרשומות ביומן האלה. כדי לאחסן את רשומות היומן האלה, בפרויקט היעד צריך לעדכן את _Default sink ביומן או ליצור sink ביומן בהתאמה אישית.

קטגוריה ביומן

בוחרים ביעד הזה כשרוצים לאחסן את נתוני היומן במשאבים שמנוהלים על ידי Cloud Logging. אפשר להציג ולנתח נתוני יומנים שמאוחסנים בקטגוריות יומנים באמצעות שירותים כמו Logs Explorer ו-Observability Analytics.

אם רוצים לצרף את נתוני היומן לנתונים עסקיים אחרים, אפשר לאחסן את נתוני היומן בקטגוריה ביומן וליצור קבוצת נתונים מקושרת ב-BigQuery. מערך נתונים מקושר ב-BigQuery הוא לקריאה בלבד, אבל אפשר להריץ עליו שאילתות כמו על כל מערך נתונים אחר ב-BigQuery.

מערך נתונים ב-BigQuery
בוחרים ביעד הזה כשרוצים לצרף את נתוני היומן לנתונים עסקיים אחרים. צריך להפעיל הרשאות כתיבה במערך הנתונים שאתם מציינים. לא מגדירים את היעד של sink להיות מערך נתונים מקושר ב-BigQuery. מערכי נתונים מקושרים ב-BigQuery הם לקריאה בלבד.
קטגוריה של Cloud Storage
בוחרים ביעד הזה כשרוצים לאחסן את נתוני היומן לטווח ארוך. הקטגוריה של Cloud Storage יכולה להיות בפרויקט שממנו מגיעים רשומות היומן, או בפרויקט אחר. רשומות ביומן מאוחסנות כקובצי JSON.
נושא Pub/Sub
בוחרים ביעד הזה כשרוצים לייצא את נתוני היומן מ-Google Cloud ואז להשתמש בשילובים עם צד שלישי כמו Splunk או Datadog. ערכי היומן מעוצבים כ-JSON ואז מנותבים לנושא Pub/Sub.

מגבלות על יעדים

בקטע הזה מתוארות מגבלות שספציפיות ליעדים:

  • כשמגדירים יעד ל-sink, צריך לספק את הנתיב המלא ולהשתמש בנקודת הקצה הגלובלית של השירות. אין תמיכה בנקודות קצה אזוריות של שירותים (REP), כמו pubsub.LOCATION.rep.googleapis.com.
  • אם אתם מעבירים רשומות ביומן לקטגוריית יומנים בפרויקט אחר Google Cloud , Error Reporting לא מנתח את הרשומות האלה ביומן. מידע נוסף מופיע במאמר סקירה כללית על Error Reporting.
  • המגבלות הבאות חלות כשמגדירים מערך נתונים ב-BigQuery כיעד של sink ליומן:

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

  • ההגבלות הבאות חלות כשהיעד של sink ביומן הוא Google Cloud פרויקט:

    • יש הגבלה של קפיצה אחת.
    • _Required sink ביומן בפרויקט היעד מעביר רשומות ביומן אל _Required קטגוריה ביומן של הפרויקט אם הרשומות ביומן תואמות למסנן של sink ביומן ומקורן בפרויקט היעד.
    • _Defaultאובייקט ה-sink ביומן בפרויקט היעד מעביר רשומות ביומן שתואמות למסנן ההכללה שלו ולא תואמות לאף מסנן החרגה. ה-sink ביומן _Default לא כולל חלק מהרשומות ביומן. לדוגמה, יעד כזה לא מעביר רשומות ביומן של פעילות אדמין ואירועי מערכת. אפשר לשנות את היעד הזה.
    • רק מאגרי נתונים (sinks) מצטברים שנמצאים בהיררכיית המשאבים של רשומה ביומן מעבדים את הרשומה.

    לדוגמה, נניח שיעד של sink ביומן בפרויקט A הוא פרויקט B. במקרה כזה, הכללים הבאים חלים:

    • בגלל מגבלת הדילוג האחד, מאגרי ה-sink ביומן בפרויקט B לא יכולים לנתב מחדש רשומות ביומן לפרויקט Google Cloud אחר.
    • בקטגוריית היומן _Required של פרויקט B נשמרים רק רשומות יומן שמקורן בפרויקט B. מאגר היומנים הזה לא מאחסן רשומות ביומן שמקורן במשאבים אחרים, כולל רשומות שמקורן בפרויקט A.
    • אם לפרויקט A ולפרויקט B יש היררכיות שונות של משאבים, רשומה ביומן ש-sink ביומן בפרויקט A מעביר לפרויקט B לא נשלחת ל-sinks המצטברים בהיררכיית המשאבים של פרויקט B.
    • אם לפרויקט A ולפרויקט B יש אותה היררכיית משאבים, רשומות היומן נשלחות למאגרי הנתונים המצטברים בהיררכיה הזו. אם רשומת יומן לא נחסמת על ידי יעד מצטבר, נתב היומנים שולח את הרשומה ליעדים בפרויקט A.

לפני שמתחילים

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

כדי להתחיל, מבצעים את הפעולות הבאות:

  1. מפעילים את Cloud Logging API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  2. מוודאים ש Google Cloud הפרויקט מכיל רשומות ביומן שאפשר לראות בLogs Explorer.

  3. כדי לקבל את ההרשאות שנדרשות ליצירה, לשינוי או למחיקה של יעד, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד כותב הגדרות של יומנים (roles/logging.configWriter) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

    מידע על מתן תפקידי IAM מופיע במדריך בקרת הגישה בנושא Logging.

  4. מוודאים שיש לכם משאב ביעד נתמך או שיש לכם אפשרות ליצור משאב כזה.

    כדי להפנות רשומות ביומן ליעד, היעד צריך להתקיים לפני שיוצרים את מאגר הנתונים. אפשר ליצור את היעד בכלGoogle Cloud פרויקט בכל ארגון.

  5. לפני שיוצרים יעד, חשוב לעיין במגבלות שחלות על היעד של הנתונים. מידע נוסף זמין בקטע מגבלות על יעדים במאמר הזה.

  6. בוחרים את הממשק שבו רוצים להשתמש:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.

    gcloud

    במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

    REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

יצירת יעד

בקטע הזה מוסבר איך ליצור יעד בפרויקט ב- Google Cloud . אפשר ליצור עד 200 יעדים לכל Google Cloud פרויקט. כדי לראות את המספר והנפח של רשומות היומן שמועברות, אפשר לעיין במדדים של logging.googleapis.com/exports/.

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

כששאילתה מכילה כמה הצהרות, אפשר לציין איך ההצהרות האלה מצורפות או להסתמך על Cloud Logging שמוסיף באופן מרומז את ההגבלה המצטרפת, AND, בין ההצהרות. לדוגמה, נניח שבתיבת דו-שיח של שאילתה או מסנן יש שתי הצהרות, resource.type = "gce_instance" ו-severity >= "ERROR". השאילתה בפועל היא resource.type = "gce_instance" AND severity >= "ERROR". ‫Cloud Logging תומך בהגבלות דיסג'נקטיביות, OR, ובהגבלות קוניונקטיביות, AND. כשמשתמשים בהצהרות OR, מומלץ לקבץ את הסעיפים באמצעות סוגריים.

כדי ליצור יעד:

המסוף

  1. במסוף Google Cloud , עוברים לדף Log Router:

    עוברים אל Log Router

    אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. בוחרים את Google Cloud הפרויקט שממנו מגיעים רשומות היומן שרוצים להפנות.

    לדוגמה, אם רוצים להפנות את הרשומות ביומן Data Access מהפרויקט בשם Project-A לקטגוריית יומנים בפרויקט בשם Project-B, צריך לבחור באפשרות Project-A.

  3. לוחצים על יצירת יעד.

  4. בחלונית פרטי יעד, מזינים את הפרטים הבאים:

    • שם יעד: מזינים מזהה ליעד. אחרי שיוצרים את יעד הנתונים, אי אפשר לשנות את השם שלו, אבל אפשר למחוק אותו וליצור יעד נתונים חדש.

    • תיאור של יעד הנתונים (אופציונלי): מתארים את המטרה או את תרחיש השימוש של יעד הנתונים.

  5. בחלונית Sink destination, בוחרים את שירות היעד ואת היעד באמצעות התפריט Select sink service. מבצעים אחת מהפעולות הבאות:

    • כדי לנתב רשומות ביומן לשירות שנמצא באותו פרויקטGoogle Cloud , בוחרים באחת מהאפשרויות הבאות:

      • מערך נתונים ב-BigQuery: בוחרים או יוצרים את מערך הנתונים עם הרשאת כתיבה שבו יתקבלו רשומות היומן שמועברות. יש לכם גם אפשרות להשתמש בטבלאות מחולקות למחיצות.
      • קטגוריה של Cloud Storage: בוחרים או יוצרים את הקטגוריה של Cloud Storage שאליה יועברו רשומות היומן.
      • נושא Pub/Sub: בוחרים או יוצרים את הנושא לקבלת רשומות היומן שהועברו.
      • ‫Splunk: בוחרים את נושא Pub/Sub לשירות Splunk.
    • כדי להפנות רשומות ביומן לפרויקט אחר של Google Cloud , בוחרים באפשרות Google Cloud project, ואז מזינים את השם המלא של היעד:

      logging.googleapis.com/projects/DESTINATION_PROJECT_ID
      
    • כדי להעביר רשומות ביומן לשירות שנמצא בGoogle Cloud פרויקט אחר, צריך לבצע את הפעולות הבאות:

      1. בוחרים באפשרות משאב אחר.
      2. מזינים את השם המלא של היעד. מידע על התחביר מופיע במאמר פורמטים של נתיבי יעד.
  6. מציינים את הרשומות ביומן שרוצים לכלול:

    1. עוברים לחלונית Choose logs to include in sink (בחירת יומנים להכללה ב-sink).

    2. בשדה מסנן הכללה, מזינים ביטוי מסנן שתואם לרשומות ביומן שרוצים לכלול. מידע על התחביר מופיע במאמר שפת שאילתות לרישום ביומן.

      אם לא מגדירים מסנן, כל רשומות היומן מהמשאב שנבחר מנותבות ליעד.

      לדוגמה, כדי להפנות את כל הרשומות ביומן הגישה לנתונים אל מאגר Logging, אפשר להשתמש במסנן הבא:

      log_id("cloudaudit.googleapis.com/data_access") OR log_id("externalaudit.googleapis.com/data_access")
      

      האורך של מסנן מוגבל ל-20,000 תווים.

    3. כדי לוודא שהזנתם את המסנן הנכון, בוחרים באפשרות תצוגה מקדימה של היומנים. הכלי Logs Explorer ייפתח בכרטיסייה חדשה עם מסנן שאוכלס מראש.

  7. (אופציונלי) מגדירים מסנן החרגה כדי להסיר חלק מהרשומות ביומן:

    1. עוברים לחלונית Choose logs to filter out of sink (בחירת יומנים להחרגה מהיעד).

    2. בשדה Exclusion filter name (שם מסנן ההחרגה), מזינים שם.

    3. בשדה Build an exclusion filter (יצירת מסנן החרגה), מזינים ביטוי מסנן שתואם לרשומות ביומן שרוצים להחריג. אפשר גם להשתמש בפונקציה sample כדי לבחור חלק מהרשומות ביומן להחרגה.

      מסנן ההחרגה.

    אפשר ליצור עד 50 מסנני החרגה לכל יעד. שימו לב שאורך המסנן לא יכול להיות יותר מ-20,000 תווים.

  8. לוחצים על יצירת יעד.

  9. נותנים לחשבון השירות של יעד הניקוז הרשאה לכתוב רשומות יומן ליעד הניקוז. מידע נוסף זמין במאמר בנושא הגדרת הרשאות ליעדים.

gcloud

כדי ליצור יעד:

  1. מריצים את הפקודה הבאה gcloud logging sinks create:

    gcloud logging sinks create SINK_NAME SINK_DESTINATION
    

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

    • ‫SINK_NAME: השם של ה-sink ביומן. אי אפשר לשנות את השם של מאגר אחרי שיוצרים אותו.
    • ‫SINK_DESTINATION: השירות או הפרויקט שאליהם רוצים לנתב את רשומות היומן. מגדירים את SINK_DESTINATION לנתיב המתאים, כפי שמתואר במאמר פורמטים של נתיב יעד.

      לדוגמה, אם יעד ה-sink הוא נושא ב-Pub/Sub, אז SINK_DESTINATION ייראה כך:

      pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
      

    אפשר גם לספק את האפשרויות הבאות:

    • ‫--log-filter : משתמשים באפשרות הזו כדי להגדיר מסנן שתואם לרשומות ביומן שרוצים לכלול במאגר. אם לא מציינים ערך למסנן ההכללה, המסנן הזה תואם לכל רשומות היומן.
    • ‫--exclusion: משתמשים באפשרות הזו כדי להגדיר מסנן החרגה לרשומות ביומן שלא רוצים שהיעד ינתב. אפשר גם להשתמש בפונקציה sample כדי לבחור חלק מהרשומות ביומן להחרגה. אפשר לחזור על האפשרות הזו כמה פעמים, וליצור עד 50 מסנני החרגה לכל מאגר.
    • --description: משתמשים באפשרות הזו כדי לתאר את המטרה או את תרחיש השימוש של מאגר הנתונים.

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

    gcloud logging sinks create my-sink logging.googleapis.com/projects/myproject123/locations/global/buckets/my-bucket \
     --log-filter='logName="projects/myproject123/logs/matched"' --description="My first sink"
    

    מידע נוסף על יצירת יעדים באמצעות Google Cloud CLI זמין במאמר gcloud logging sinks.

  2. אם התשובה של הפקודה מכילה מפתח JSON עם התווית "writerIdentity", צריך להעניק לחשבון השירות של יעד הנתונים הרשאה לכתוב ליעד הנתונים. מידע נוסף זמין במאמר בנושא הגדרת הרשאות ליעדים.

    אין צורך להגדיר הרשאות ליעד אם התגובה לא מכילה מפתח JSON עם התווית "writerIdentity".

REST

  1. כדי ליצור sink ביומן ב Google Cloud פרויקט, משתמשים ב-projects.sinks.create ב-Logging API. באובייקט LogSink, מציינים את ערכי החובה המתאימים בגוף הבקשה של השיטה:

    • name: מזהה של יעד. אחרי שיוצרים את יעד הנתונים, אי אפשר לשנות את השם שלו, אבל אפשר למחוק אותו וליצור יעד נתונים חדש.
    • ‫destination: השירות והיעד שאליהם רוצים לנתב את רשומות היומן. כדי לנתב רשומות ביומן לפרויקט אחר, או ליעד שנמצא בפרויקט אחר, צריך להגדיר את השדה destination לנתיב המתאים, כמו שמתואר במאמר פורמטים של נתיבי יעד.

      לדוגמה, אם יעד ה-sink הוא נושא ב-Pub/Sub, אז destination ייראה כך:

      pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
      
  2. באובייקט LogSink, מציינים את המידע האופציונלי המתאים:

    • ‫filter : מגדירים את השדה filter כך שיתאים לרשומות ביומן שרוצים לכלול ב-Sink. אם לא מגדירים מסנן, כל רשומות היומן מהפרויקטGoogle Cloud מועברות ליעד. חשוב לדעת שאורך המסנן לא יכול לחרוג מ-20,000 תווים.
    • ‫exclusions: מגדירים את השדה הזה כך שיתאים לרשומות ביומן שרוצים להחריג מהיעד. אפשר גם להשתמש בפונקציה sample כדי לבחור חלק מהרשומות ביומן להחרגה. אפשר ליצור עד 50 מסנני החרגה לכל יעד.
    • ‫description: מגדירים את השדה הזה כדי לתאר את המטרה או את תרחיש השימוש של מאגר הנתונים.
  3. מפעילים את הפקודה projects.sinks.create כדי ליצור את יעד הנתונים.

  4. אם תגובה מה-API מכילה מפתח JSON עם התווית "writerIdentity", צריך לתת לחשבון השירות של ה-sink הרשאת כתיבה ליעד ה-sink. מידע נוסף זמין במאמר בנושא הגדרת הרשאות ליעדים.

    אין צורך להגדיר הרשאות ליעד אם תגובה מה-API לא מכילה מפתח JSON עם התווית "writerIdentity".

מידע נוסף על יצירת יעדים באמצעות Logging API מופיע במאמר LogSink.

אם אתם מקבלים התראות על שגיאות, כדאי לעיין במאמר בנושא פתרון בעיות שקשורות לניתוב ולמאגרי נתונים.

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

כשמגדירים יעד של sink, צריך לספק את הנתיב המלא ולהשתמש בנקודת הקצה הגלובלית של השירות. אין תמיכה בנקודות קצה אזוריות של שירותים (REP), כמו pubsub.LOCATION.rep.googleapis.com.

בפורמטים הבאים של נתיבים, DESTINATION_PROJECT_ID מתייחס למזהה או למספר של פרויקט היעד:

  • קטגוריה ביומן ב-Cloud Logging:

    logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
    
  • פרויקט Google Cloud אחר:

    logging.googleapis.com/projects/DESTINATION_PROJECT_ID
    
  • מערך נתונים ב-BigQuery:

    bigquery.googleapis.com/projects/DESTINATION_PROJECT_ID/datasets/DATASET_ID
    
  • קטגוריה של Cloud Storage:

    storage.googleapis.com/BUCKET_NAME
    
  • נושא Pub/Sub:

    pubsub.googleapis.com/projects/DESTINATION_PROJECT_ID/topics/TOPIC_ID
    

הגדרת הרשאות ליעד

בקטע הזה מוסבר איך מעניקים ל-Logging את ההרשאות לניהול זהויות והרשאות גישה (IAM) כדי לכתוב רשומות ביומן ליעד של מאגר. רשימה מלאה של התפקידים וההרשאות ב-Logging זמינה במאמר בקרת גישה.

כשיוצרים יעד, Cloud Logging יוצר חשבון שירות משותף למשאב, אלא אם חשבון השירות הנדרש כבר קיים. יכול להיות שחשבון השירות קיים כי אותו חשבון שירות משמש לכל מאגרי הנתונים (sinks) במשאב הבסיסי. משאב יכול להיות Google Cloud פרויקט, ארגון, תיקייה או חשבון לחיוב.

זהות הכתיבה של יעד היא המזהה של חשבון השירות שמשויך ליעד הזה. לכל יעד יש זהות כתיבה, חוץ מיעדים שכותבים לקטגוריית יומנים באותו פרויקט שממנו מגיעים רשומות היומן. Google Cloud בהגדרה השנייה, לא נדרש חשבון שירות, ולכן השדה writer identity של יעד הסינכרון מופיע כ-None במסוף. ה-API והפקודות של Google Cloud CLI לא מדווחים על זהות הכותב.

ההוראות הבאות רלוונטיות לפרויקטים, לתיקיות, לארגונים ולחשבונות לחיוב:

המסוף

  1. מוודאים שיש לכם גישת בעלים לGoogle Cloud פרויקט שמכיל את היעד. אם אין לכם גישת בעלים ליעד של ה-sink, צריך לבקש מ-Project Owner להוסיף את זהות הכתיבה כישות מורשית.

  2. כדי לקבל את זהות הכותב של יעד הנתונים – כתובת אימייל – מיעד הנתונים החדש, מבצעים את הפעולות הבאות:

    1. במסוף Google Cloud , עוברים לדף Log Router:

      עוברים אל Log Router

      אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

    2. בסרגל הכלים, בוחרים את הפרויקט שמכיל את היעד.
    3. בוחרים באפשרות תפריט ואז באפשרות הצגת פרטים של יעד. זהות הכותב מופיעה בחלונית Sink details.
  3. אם הערך של השדה writerIdentity מכיל כתובת אימייל, ממשיכים לשלב הבא. אם הערך הוא None, לא צריך להגדיר הרשאות יעד ל-sink.

  4. מעתיקים את זהות הכתיבה של יעד הנתונים ללוח.

    כתובת האימייל מזהה את חשבון המשתמש. הקידומת serviceAccount: מציינת את סוג החשבון.

  5. נותנים לחשבון המשתמש שצוין כזהות הכותב של יעד הסינכרון הרשאה לכתוב נתוני יומן ליעד:

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

      כניסה לדף IAM

      אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שמופיע בה הכותרת המשנית IAM & Admin.

    2. בסרגל הכלים, מוודאים שהפרויקט שנבחר הוא הפרויקט שבו מאוחסן היעד או שהוא יעד ה-sink. לדוגמה, אם היעד הוא קטגוריית יומנים, צריך לוודא שבסרגל הכלים מוצג הפרויקט שבו מאוחסנת קטגוריית היומנים.

    3. לוחצים על Grant access.

    4. מעניקים לחשבון המשתמש שצוין בזהות הכותב של יעד השינויים תפקיד IAM על סמך היעד של יעד השינויים ביומן:

gcloud

  1. מוודאים שיש לכם גישת בעלים לGoogle Cloud פרויקט שמכיל את היעד. אם אין לכם גישת בעלים ליעד של ה-sink, צריך לבקש מ-Project Owner להוסיף את זהות הכתיבה כישות מורשית.

  2. מקבלים את חשבון השירות מהשדה writerIdentity ביעד:

    gcloud logging sinks describe SINK_NAME
    
  3. מוצאים את יעד הייצוא שרוצים לשנות את ההרשאות שלו. אם בפרטים של יעד הייצוא מופיעה שורה עם writerIdentity, ממשיכים לשלב הבא. אם הפרטים לא כוללים שדה writerIdentity לא צריך להגדיר הרשאות יעד ל-sink.

    הזהות של חשבון השירות עם הרשאת כתיבה נראית כך:

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  4. מעניקים להרשאת הזהות של הכותב של יעד הנתונים הרשאה לכתוב נתוני יומן ליעד באמצעות הפקודה gcloud projects add-iam-policy-binding.

    לפני שמשתמשים בפקודה הבאה, מחליפים את הערכים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט. מציינים את הפרויקט שבו מאוחסן יעד sink ביומן. אם היעד הוא פרויקט, מציינים את הפרויקט.
    • ‫PRINCIPAL: מזהה של חשבון המשתמש שרוצים להקצות לו את התפקיד. בדרך כלל, מזהי החשבונות הראשיים מופיעים בפורמט הבא: PRINCIPAL-TYPE:ID. לדוגמה, user:my-user@example.com. רשימה מלאה של הפורמטים האפשריים של PRINCIPAL מופיעה במאמר מזהים של חשבונות משתמשים.
    • ‫ROLE: תפקיד IAM. מקצים לזהות הכתיבה של ה-sink תפקיד IAM על סמך היעד של sink ביומן:

      מריצים את הפקודה gcloud projects add-iam-policy-binding:

      gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
      

REST

מומלץ להשתמש במסוף Google Cloud או ב-Google Cloud CLI כדי להקצות תפקיד לחשבון השירות.

ניהול יעדים

מומלץ לבדוק את ההגדרה של sink ביומן כשמבצעים שינויים באחסון היומנים. לדוגמה, אם מוחקים את היעד של sink ביומן, צריך למחוק גם את sink ביומן התואם.

אחרי שיוצרים את מאגרי הנתונים, אפשר לבצע בהם את הפעולות הבאות. יכול להיות שיחלפו כמה דקות עד שהשינויים שביצעתם ב-sink יחולו:

  • לפרטים
  • עדכון
  • השבתה

    • אי אפשר להשבית את יעד ה-_Required.
    • אפשר להשבית את יעד _Default כדי להפסיק את הניתוב של רשומות ביומן לקטגוריית _Default Logging.

      אתם יכולים להשבית את אובייקט ה-sink‏ _Default לכל פרויקט או תיקייה חדשיםGoogle Cloud שאתם יוצרים בארגון או בתיקייה, על ידי הגדרת הגדרות ברירת מחדל של משאבים ל-Cloud Logging.

  • מחיקה

    • אי אפשר למחוק את יעד הנתונים _Default או את יעד הנתונים _Required.
    • כשמוחקים מאגר, הוא לא מעביר יותר רשומות ביומן.
    • אם ליעד יש חשבון שירות ייעודי, מחיקת היעד תגרום גם למחיקת חשבון השירות. למאגרי נתונים שנוצרו לפני 22 במאי 2023 יש חשבונות שירות ייעודיים. למאגרי נתונים שנוצרו ב-22 במאי 2023 או אחריו יש חשבון שירות משותף. מחיקת היעד לא מוחקת את חשבון השירות המשותף.
  • פתרון בעיות של כשלים

  • הצגת נפח היומן ושיעורי השגיאות

בהמשך מפורטות ההוראות לניהול יעד בפרויקטGoogle Cloud . במקום פרויקט Google Cloud , אפשר לציין חשבון לחיוב, תיקייה או ארגון:

המסוף

  1. במסוף Google Cloud , עוברים לדף Log Router:

    עוברים אל Log Router

    אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

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

בדף Log Router מוצגים היעדים במשאב שנבחר. כל שורה בטבלה מכילה מידע על המאפיינים של יעד:

  • מופעל: מציין אם מצב היעד מופעל או מושבת.
  • סוג: שירות היעד של ה-sink. לדוגמה: Cloud Logging bucket.
  • שם: המזהה של יעד הנתונים, כפי שסופק כשנוצר יעד הנתונים. לדוגמה: _Default.
  • תיאור: תיאור של יעד, כפי שסופק כשנוצר היעד.
  • יעד: השם המלא של היעד שאליו נשלחות רשומות היומן שמועברות.
  • נוצר: התאריך והשעה שבהם נוצר יעד הנתונים.
  • העדכון האחרון: התאריך והשעה שבהם בוצע העדכון האחרון של יעד הנתונים.
  • נפח: הנפח הכולל של היומנים שמועברים ל-sink ביומן. הערך כולל את נפח הנתונים שמועבר למאגרי יומנים, לפרויקטים או ליעדים אחרים.

בכל שורה בטבלה, בתפריט פעולות נוספות יש את האפשרויות הבאות:

  • הצגת פרטים של אובייקט sink: מוצגים השם, התיאור, שירות היעד, היעד ומסנני ההכללה וההחרגה של אובייקט ה-sink. כשלוחצים על עריכה, נפתחת החלונית עריכת יעד.
  • עריכת יעד: פותחת את החלונית עריכת יעד שבה אפשר לעדכן את הפרמטרים של היעד.
  • השבתת יעד: מאפשרת להשבית את היעד ולהפסיק את הניתוב של רשומות ביומן אל היעד. מידע נוסף על השבתת יעד לניתוב נתונים מופיע במאמר הפסקת האחסון של יומנים בקטגוריות ביומן.
  • הפעלת יעד: מאפשרת להפעיל יעד מושבת ולהפעיל מחדש את הניתוב של רשומות ביומן ליעד.
  • מחיקת מאגר: מאפשרת למחוק את המאגר ולהפסיק את ניתוב הרשומות ביומן ליעד של המאגר.
  • פתרון בעיות ב-sink: פותח את Logs Explorer, שבו אפשר לפתור שגיאות ב-sink.
  • הצגת נפח היומן של יעד הנתונים ושיעורי השגיאות: פתיחת הכלי Metrics Explorer שבו אפשר להציג ולנתח נתונים מיעד הנתונים.

כדי למיין את הטבלה לפי עמודה, בוחרים את שם העמודה.

gcloud

  • כדי להציג את רשימת היעדים בפרויקט Google Cloud , משתמשים בפקודה gcloud logging sinks list, שמתאימה ל-method ‏projects.sinks.list ב-Logging API:

    gcloud logging sinks list
    

    כדי לראות את רשימת היעדים המצטברים, משתמשים באפשרות המתאימה כדי לציין את המשאב שמכיל את היעד. לדוגמה, אם יצרתם את יעד הנתונים ברמת הארגון, השתמשו באפשרות --organization=ORGANIZATION_ID כדי להציג את רשימת יעדי הנתונים של הארגון.

  • כדי לתאר יעד, משתמשים בפקודה gcloud logging sinks describe, שמתאימה ל-method‏ projects.sinks.get של Logging API:

    gcloud logging sinks describe SINK_NAME
    
  • כדי לעדכן יעד, משתמשים בפקודה gcloud logging sinks update, שמתאימה ל-method של ה-API‏ projects.sinks.update.

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

    gcloud logging sinks update SINK_NAME NEW_DESTINATION --log-filter=NEW_FILTER

    אם החלקים האלה לא משתנים, אפשר להשמיט את NEW_DESTINATION או --log-filter.

    לדוגמה, כדי לעדכן את היעד של sink שנקרא my-project-sink ליעד חדש של קטגוריה של Cloud Storage שנקרא my-second-gcs-bucket, הפקודה תיראה כך:

    gcloud logging sinks update my-project-sink storage.googleapis.com/my-second-gcs-bucket
    
  • כדי להשבית יעד, משתמשים בפקודה gcloud logging sinks update, שמתאימה לשיטת ה-API‏ projects.sinks.update, וכוללים את האפשרות --disabled:

    gcloud logging sinks update SINK_NAME --disabled
    

    כדי להפעיל מחדש את יעד הנתונים, משתמשים בפקודה gcloud logging sinks update, מסירים את האפשרות --disabled ומוסיפים את האפשרות --no-disabled:

    gcloud logging sinks update SINK_NAME --no-disabled
    
  • כדי למחוק יעד, משתמשים בפקודה gcloud logging sinks delete, שמתאימה ל-method ‏projects.sinks.delete ב-API:

    gcloud logging sinks delete SINK_NAME
    

    מידע נוסף על ניהול יעדים באמצעות Google Cloud CLI זמין במאמר העזר בנושא gcloud logging sinks.

REST

  • כדי לראות את יעד ההעברה של Google Cloud הפרויקט, קוראים לפונקציה projects.sinks.list.

  • כדי לראות את הפרטים של יעד, מתקשרים אל projects.sinks.get.

  • כדי לעדכן את יעד הנתונים, מתקשרים אל projects.sinks.update.

    אפשר לעדכן את היעד, המסננים והתיאור של יעד. אפשר גם להשבית או להפעיל מחדש את יעד הנתונים.

  • כדי להשבית יעד, מגדירים את השדה disabled באובייקט LogSink לערך true, ואז קוראים לפונקציה projects.sinks.update.

    כדי להפעיל מחדש את היעד, צריך להגדיר את השדה disabled באובייקט LogSink לערך false, ואז לקרוא ל-projects.sinks.update.

  • כדי למחוק יעד, מתקשרים אל projects.sinks.delete.

    מידע נוסף על ניהול יעדים באמצעות Logging API זמין במאמר LogSink.

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

אתם יכולים להשבית את _Default sink ואת כל ה-sinks שהוגדרו על ידי המשתמש. כשמשביתים יעד, הוא מפסיק להעביר רשומות חדשות ביומן ליעד שלו. לדוגמה, אם משביתים את יעד הטביעה _Default, לא מנותבות רשומות יומן אל _Default הקטגוריה. קטגוריית _Default מתרוקנת כשכל רשומות היומן שאוחסנו בה מגיעות לסוף תקופת השמירה של הקטגוריה.

ההוראות הבאות מראות איך להשבית את יעד ההעברה של Google Cloud פרויקט_Default כדי שלא יועברו אליו רשומות ביומן מ_Defaultמאגר היומנים:

המסוף

  1. במסוף Google Cloud , עוברים לדף Log Router:

    עוברים אל Log Router

    אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. כדי למצוא את כל היעדים שמנתבים רשומות ביומן אל מאגר היומנים _Default, מסננים את היעדים ומזינים _Default.
  3. לכל יעד, לוחצים על תפריט ואז על השבתת היעד.

    היעדים מושבתים עכשיו ולא מעבירים יותר רשומות ביומן לדלי _Default.

כדי להפעיל מחדש יעד מושבת ולהתחיל מחדש את ניתוב הרשומות ביומן ליעד, מבצעים את הפעולות הבאות:

  1. במסוף Google Cloud , עוברים לדף Log Router:

    עוברים אל Log Router

    אם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. כדי למצוא את כל היעדים שמנתבים רשומות ביומן אל מאגר היומנים _Default, מסננים את היעדים ומזינים _Default.
  3. לכל יעד, לוחצים על תפריט ואז על הפעלת יעד.

gcloud

  1. כדי להציג את רשימת היעדים בפרויקט Google Cloud , משתמשים בפקודה gcloud logging sinks list, שמתאימה ל-method ‏projects.sinks.list ב-Logging API:

    gcloud logging sinks list
    
  2. מאתרים את כל יעד ההעברה שמנתב אל מאגר היומנים _Default. כדי לתאר יעד, כולל הצגת שם היעד, משתמשים בפקודה gcloud logging sinks describe, שמתאימה ל-method‏ projects.sinks.get של Logging API:

    gcloud logging sinks describe SINK_NAME
    
  3. מריצים את הפקודה gcloud logging sinks update וכוללים את האפשרות --disabled. לדוגמה, כדי להשבית את יעד ה-sink‏ _Default, משתמשים בפקודה הבאה:

    gcloud logging sinks update _Default --disabled
    

    מאגר _Default מושבת עכשיו, והוא כבר לא מעביר רשומות ביומן אל מאגר היומנים _Default.

כדי להשבית את שאר היעדים בפרויקט Google Cloud שמנתבים לקטגוריית _Default, חוזרים על השלבים הקודמים.

כדי להפעיל מחדש את יעד הנתונים, משתמשים בפקודה gcloud logging sinks update, מסירים את האפשרות --disabled ומוסיפים את האפשרות --no-disabled:

gcloud logging sinks update _Default --no-disabled

REST

  1. כדי לראות את היעדים של Google Cloud הפרויקט, מפעילים את השיטה projects.sinks.list של Logging API.

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

  2. לדוגמה, כדי להשבית את יעד _Default, מגדירים את השדה disabled באובייקט LogSink לערך true, ואז קוראים ל-projects.sinks.update.

    מאגר _Default מושבת עכשיו, והוא כבר לא מעביר רשומות ביומן לקטגוריה _Default.

כדי להשבית את שאר היעדים בפרויקט Google Cloud שמנתבים לקטגוריית _Default, חוזרים על השלבים הקודמים.

כדי להפעיל מחדש יעד, צריך להגדיר את השדה disabled באובייקט LogSink לערך false, ואז לקרוא ל-projects.sinks.update.

דוגמאות קוד

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

דוגמאות לסינון

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

שחזור המסנן של _Default

אם ערכתם את המסנן של יעד _Default, יכול להיות שתרצו לשחזר את ההגדרות המקוריות של היעד הזה. כשיוצרים את אובייקט ה-sink‏ _Default, הוא מוגדר עם מסנן ההכללה הבא ומסנן החרגה ריק:

  NOT log_id("cloudaudit.googleapis.com/activity") AND NOT \
  log_id("externalaudit.googleapis.com/activity") AND NOT \
  log_id("cloudaudit.googleapis.com/system_event") AND NOT \
  log_id("externalaudit.googleapis.com/system_event") AND NOT \
  log_id("cloudaudit.googleapis.com/access_transparency") AND NOT \
  log_id("externalaudit.googleapis.com/access_transparency")

החרגה של יומנים של קונטיינרים ו-Pods ב-Google Kubernetes Engine

כדי להחריג את רשומות היומן של קונטיינרים ו-Pods של Google Kubernetes Engine עבור מערכת GKE‏ namespaces, משתמשים במסנן הבא:

resource.type = ("k8s_container" OR "k8s_pod")
resource.labels.namespace_name = (
"cnrm-system" OR
"config-management-system" OR
"gatekeeper-system" OR
"gke-connect" OR
"gke-system" OR
"istio-system" OR
"knative-serving" OR
"monitoring-system" OR
"kube-system")

כדי לא לכלול רשומות ביומן של צומת Google Kubernetes Engine עבור ערכי מערכת GKE‏ log_id, משתמשים במסנן הבא:

resource.type = "k8s_node"
(log_id("container-runtime") OR
 log_id("docker") OR
 log_id("kube-container-runtime-monitor") OR
 log_id("kube-logrotate") OR
 log_id("kube-node-configuration") OR
 log_id("kube-node-installation") OR
 log_id("kubelet") OR
 log_id("kubelet-monitor") OR
 log_id("node-journal") OR
 log_id("node-problem-detector"))

כדי לראות את נפח הרשומות ביומן של צומת, קבוצת Pod וקונטיינר של Google Kubernetes Engine שמאוחסנות במאגרי יומנים, משתמשים ב-Metrics Explorer:

החרגה של יומני Dataflow שלא נדרשים לצורך תמיכה

כדי להחריג רשומות ביומן של Dataflow שלא נדרשות לצורך תמיכה, משתמשים במסנן הבא:

resource.type="dataflow_step"
labels."dataflow.googleapis.com/log_type"!="system" AND labels."dataflow.googleapis.com/log_type"!="supportability"

כדי לראות את נפח היומנים של Dataflow שמאוחסנים בדלי יומנים, משתמשים ב-Metrics Explorer. מידע נוסף זמין במאמר בנושא הצגת נפח של רשומות ביומן של Dataflow.

החרגה של רשומות ביומן של Storage Transfer Service שמתעדות פעולות מוצלחות

כדי להחריג רשומות ביומן של Storage Transfer Service שמתעדות פעולות שבוצעו בהצלחה, משתמשים במסנן ההחרגה הבא:

resource.type="storage_transfer_job" AND
jsonPayload.status.statusCode="OK"

אפשרות אחרת היא לשנות את נתוני היומן שנכתבים על ידי משימה של Storage Transfer Service. מידע נוסף זמין במאמר הפעלת רישום ביומן של Storage Transfer Service.

יכולת תמיכה

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

לדוגמה, רשומות ביומן המערכת של GKE שימושיות לפתרון בעיות באפליקציות ובאשכולות של GKE, כי הן נוצרות עבור אירועים שמתרחשים באשכול. רשומות היומן האלה יכולות לעזור לכם לקבוע אם קוד האפליקציה או אשכול GKE הבסיסי גורמים לשגיאה באפליקציה. יומני המערכת של GKE כוללים גם יומני ביקורת של Kubernetes שנוצרו על ידי רכיב שרת ה-API של Kubernetes, כולל שינויים שבוצעו באמצעות הפקודה kubectl ואירועים של Kubernetes.

ב-Dataflow, מומלץ לכתוב לפחות את יומני המערכת (labels."dataflow.googleapis.com/log_type"="system") ואת יומני התמיכה (labels."dataflow.googleapis.com/log_type"="supportability") לדליים של יומנים. היומנים האלה חיוניים למפתחים כדי לצפות בצינורות Dataflow ולפתור בעיות בהם. בלי היומנים האלה, יכול להיות שהמשתמשים לא יוכלו להשתמש בדף פרטי המשימה ב-Dataflow כדי לראות את יומני המשימות.

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