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

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

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

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

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

  • יש לכם Google Cloud תיקייה או ארגון עם רשומות ביומן שאתם יכולים לראות בLogs Explorer.

  • יש לכם אחד מתפקידי ה-IAM הבאים בGoogle Cloud ארגון או בתיקייה שמהם אתם מעבירים רשומות ביומן.

    • בעלים (roles/owner)
    • אדמין ב-Logging (roles/logging.admin)
    • Logs Configuration Writer (roles/logging.configWriter)

    ההרשאות שכלולות בתפקידים האלה מאפשרות ליצור, למחוק או לשנות מאגרי נתונים. במדריך בקרת הגישה של Logging מוסבר איך מגדירים תפקידים ב-IAM.

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

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

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

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

    המסוף

    כשמשתמשים במסוף 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 .

יצירת יעד מצטבר

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

אפשר ליצור עד 200 יעדים לכל תיקייה או ארגון.

המסוף

כדי ליצור מאגר נתונים משולב לתיקייה או לארגון:

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

    עוברים אל Log Router

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

  2. בוחרים תיקייה או ארגון קיימים.

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

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

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

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

  5. בתפריט Select sink service (בחירת שירות יעד), בוחרים את סוג היעד וממלאים את תיבת הדו-שיח כדי לציין את היעד. אפשר לבחור יעד קיים או ליצור יעד חדש.

    • בשביל יעד מסוג intercepting sink, בוחרים באפשרות Google Cloud project ואז מזינים את השם המלא של פרויקט היעד Google Cloud :

      logging.googleapis.com/projects/DESTINATION_PROJECT_ID
      
    • אם מדובר ביעד שאינו מיירט, בוחרים את היעד ומזינים את השם המוגדר במלואו של היעד. אלה היעדים שנתמכים:

      • Google Cloud project

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID
        
      • קטגוריה ביומן ב-Cloud Logging

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

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

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

        storage.googleapis.com/BUCKET_NAME
        
      • Splunk

        מזינים את הנושא ב-Pub/Sub עבור שירות Splunk.

  6. בחלונית Choose logs to include in sink (בחירת יומנים שיש לכלול ב-sink), בוחרים את המשאבים שרוצים לכלול ב-sink.

    • למאגר נתונים זמני שחוסם את הגישה, בוחרים באפשרות Intercept logs ingested by this organization and all child resources (חסימת הגישה ליומנים שנקלטים בארגון הזה ובכל משאבי הצאצא).

    • אם מדובר ב-sink שלא מיירט את הנתונים, בוחרים באפשרות Include logs ingested by this resource and all child resources.

  7. בשדה Build inclusion filter, מזינים ביטוי מסנן שתואם לרשומות ביומן שרוצים לכלול. אם לא מגדירים מסנן, כל רשומות היומן מהמשאב שנבחר מנותבות ליעד.

    לדוגמה, יכול להיות שתרצו ליצור מסנן שיעביר את כל יומני הביקורת של Data Access לקטגוריה אחת ב-Logging. המסנן הזה נראה כך:

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

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

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

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

  9. אופציונלי: בחלונית Choose logs to exclude from the sink (בחירת יומנים להחרגה ממאגר הנתונים), מבצעים את הפעולות הבאות:

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

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

      פילטר ההחרגה.

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

      logName:projects/PROJECT_ID
      

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

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

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

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

gcloud

כדי ליצור מאגר נתונים מצטבר, משתמשים בפקודה logging sinks create:

  1. כדי ליצור יעד, קוראים לפקודה gcloud logging sinks create ומוודאים שכוללים את האפשרות --include-children.

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

    • ‫SINK_NAME: השם של ה-sink ביומן. אי אפשר לשנות את השם של מאגר אחרי שיוצרים אותו.
    • ‫SINK_DESTINATION: השירות או הפרויקט שאליהם רוצים לנתב את רשומות היומן. מידע על הפורמט של יעדים כאלה מופיע במאמר פורמטים של נתיבי יעד.
    • ‫INCLUSION_FILTER: מסנן ההכללה של יעד. דוגמאות למסננים מופיעות במאמר בנושא יצירת מסננים למאגרי נתונים מצטברים.
    • ‫FOLDER_ID: מזהה התיקייה. אם רוצים ליצור יעד ברמת הארגון, מחליפים את --folder=FOLDER_ID ב--- organization=ORGANIZATION_ID.

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

    gcloud logging sinks create SINK_NAME \
      SINK_DESTINATION  --include-children \
      --folder=FOLDER_ID --log-filter="INCLUSION_FILTER"
    

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

    • כדי ליצור sink שחוסם את הגישה, כוללים את האפשרות --intercept-children.

    לדוגמה, אם יוצרים מאגר נתונים (sink) מצטבר ברמת התיקייה, שהיעד שלו הוא נושא Pub/Sub, הפקודה תיראה כך:

    gcloud logging sinks create SINK_NAME \
      pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID --include-children \
      --folder=FOLDER_ID --log-filter="logName:activity"
  2. נותנים לחשבון השירות של יעד ה-sink הרשאת כתיבה ליעד ה-sink. מידע נוסף מופיע במאמר בנושא הגדרת הרשאות ליעדים.

REST

כדי ליצור יעד מצטבר, משתמשים ב-method‏ organizations.sinks.create או folders.sinks.create של Logging API. מכינים את הארגומנטים של השיטה באופן הבא:

  1. מגדירים את השדה parent לארגון Google Cloud או לתיקייה שבהם רוצים ליצור את יעד הנתונים. ההורה חייב להיות אחד מהבאים:

    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
  2. באובייקט LogSink בגוף הבקשה של השיטה, מבצעים אחת מהפעולות הבאות:

    • מגדירים את includeChildren להיות True.

    • כדי ליצור מאגר נתונים זמני שחוצה את האפליקציה, צריך להגדיר את השדה interceptChildren לערך True.

  3. מגדירים את השדה filter כך שיתאים לרשומות ביומן שרוצים לכלול.

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

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

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

  5. מתקשרים אל organizations.sinks.create או אל folders.sinks.create כדי ליצור את הכיור.

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

יכול להיות שיחלפו כמה דקות עד שהשינויים ב-sink יחולו.

מסננים של מאגרי נתונים מצטברים

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

בחלק מהדוגמאות נעשה שימוש בסימון הבא:

  • ‫: הוא אופרטור של מחרוזת משנה. אל תחליפו את האופרטור =.
  • ‫... מייצג השוואות נוספות של מסננים.
  • משתנים מסומנים בטקסט צבעוני. צריך להחליף אותם בערכים תקינים.

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

פרטים נוספים על תחביר הסינון זמינים במאמר בנושא שפת השאילתות של Logging.

צריך לבחור את מקור היומן

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

resource.type="gce_instance"

עם המסנן הקודם, רשומות ביומן עם סוג משאב של מכונות VM ב-Compute Engine שנכתבות לכל צאצא של הארגון הזה מנותבות על ידי מאגר נתונים משותף ליעד.

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

המסננים הבאים מגבילים את רשומות היומן לפרויקטים, תיקיות או ארגונים ספציפיים Google Cloud :

logName:"projects/PROJECT_ID/logs/" AND ... 
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ... 
logName:"folders/FOLDER_ID/logs/" AND ... 
logName:"organizations/ORGANIZATION_ID/logs/" AND ... 

לדוגמה, כדי להפנות רק רשומות ביומן שנוצרו על ידי מכונות של Compute Engine ומקורן בתיקייה my-folder, משתמשים במסנן הבא:

logName:"folders/my-folder/logs/" AND resource.type="gce_instance"

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

בחירת המשאב במעקב

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

logName:"projects/PROJECT_ID/logs" AND
resource.type=RESOURCE_TYPE AND
resource.labels.instance_id=INSTANCE_ID

רשימה של סוגי המשאבים זמינה במאמר סוגי המשאבים במעקב.

בחירת דוגמה של רשומות ביומן

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

sample(insertId, 0.10) AND ...

מידע נוסף זמין במאמר בנושא הפונקציה sample.

מידע נוסף על מסננים של Cloud Logging זמין במאמר בנושא שפת שאילתות של Logging.

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

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

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

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

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

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

כדי להגדיר הרשאות ל-sink כדי לנתב ליעד שלו:

המסוף

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

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

      כניסה אל Log Router

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

    2. בוחרים באפשרות תפריט ואז באפשרות הצגת פרטים של יעד. זהות הכותב מופיעה בחלונית Sink details.

    3. אם הערך של השדה writerIdentity מכיל כתובת אימייל, עוברים לשלב הבא. אם הערך הוא None, אין צורך להגדיר הרשאות יעד.

    4. מעתיקים את זהות הכתיבה של יעד הנתונים ללוח. הזהויות של ה-Writer עשויות להיראות שונה בהתאם למשאב שאליו שייך ה-Sink, אבל תמיד יש להן את הקידומת serviceAccount:. דוגמה לזהות של כותב:

      serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
      
  2. נותנים לישות הראשית שצוינה על ידי זהות הכותב של יעד הסינק את ההרשאה לכתוב נתוני יומן ליעד:

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

      כניסה לדף IAM

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

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

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

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

gcloud

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

  2. כדי לקבל מידע על חשבון השירות של יעד הנתונים, קוראים לשיטה gcloud logging sinks describe.

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

    • ‫SINK_NAME: השם של ה-sink ביומן. אי אפשר לשנות את השם של מאגר נתונים אחרי שיוצרים אותו.

    מריצים את הפקודה gcloud logging sinks describe:

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

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

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

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

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

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

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

REST

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

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