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

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

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

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

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

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

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

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

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

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

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

  • צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

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

    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 הם לקריאה בלבד.

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

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

        pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
        
      • 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.

    לדוגמה, אם יוצרים מאגר נתונים משולב ברמת התיקייה והיעד שלו הוא נושא ב-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. מידע נוסף מופיע במאמר בנושא הגדרת הרשאות ליעדים.

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

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

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

בדוגמאות מסוימות אנחנו משתמשים בסימון הבא:

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

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

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

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

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

resource.type="gce_instance"

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

עם זאת, יכולים להיות מצבים שבהם תרצו להשתמש במאגר נתונים מסוג sink מצטבר כדי לנתב רשומות ביומן רק ממשאבי צאצא ספציפיים. לדוגמה, מסיבות שקשורות לתאימות, יכול להיות שתרצו לאחסן יומני ביקורת מתיקיות או מפרויקטים ספציפיים בקטגוריית 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, כולל רשומות ביומן שנכתבו לפרויקטים שהם צאצאים של my-folder, לא מנותבות ליעד. Google Cloud

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

כדי לנתב רשומות ביומן רק ממשאב ספציפי במעקב ב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. מעתיקים את זהות הכתיבה של יעד הנתונים ללוח. הזהויות של בעלי הרשאת הכתיבה עשויות להיראות שונה בהתאם למשאב שאליו שייך ה-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 כדי להקצות תפקיד לחשבון השירות.

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