מבוא למעקב ב-BigQuery

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

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

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

מדדים

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

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

ב-BigQuery, המדדים הזמינים כוללים את מספר המשימות שפועלות, מספר הבייטים שנסרקו במהלך שאילתה והתפלגות זמני השאילתות. המדדים של שאילתה זמינים רק אחרי שהשאילתה מצליחה, ויכול להיות שיעברו עד שבע דקות עד שהם ידווחו. מדדים של שאילתות שנכשלו לא מדווחים. רשימה מלאה של המדדים הזמינים, כולל תדירות הדגימה, החשיפה והמגבלות שלהם, מופיעה בקטע Cloud de Confiance metrics במאמר bigquery.

להשתמש ב-Cloud Monitoring כדי להציג את המדדים של BigQuery וליצור תרשימים והתראות. לכל מדד יש סוג משאב (bigquery_dataset,‏ bigquery_project או global) וקבוצת תוויות. אפשר לקבץ או לסנן כל מדד באמצעות התוויות.

לדוגמה, כדי להציג בתרשים את מספר השאילתות האינטראקטיביות שבתהליך, משתמשים בהצהרת PromQL הבאה, שמסננת לפי priority ששווה ל-interactive:

{"bigquery.googleapis.com/query/count", monitored_resource="global", priority="interactive"}

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

avg_over_time({"bigquery.googleapis.com/job/num_in_flight",
  monitored_resource="bigquery_project",
  job_type="load"
}[10m])

למידע נוסף, קראו את המאמר יצירת תרשימים והתראות ל-BigQuery.

יומנים

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

יומן הוא אוסף של רשומות ביומן שאפשר רק להוסיף אליו. לדוגמה, אתם יכולים לכתוב רשומות ביומן משלכם ליומן בשם projects/PROJECT_ID/logs/my-test-log. בשירותים רבים שלCloud de Confiance , כולל BigQuery, נוצר סוג של יומן שנקרא יומני ביקורת. היומנים האלה מתעדים:

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

יומני הביקורת נכתבים בפורמט JSON מובנה. סוג הנתונים הבסיסי של רשומות ביומן הוא המבנה LogEntry.Cloud de Confiance המבנה הזה מכיל את שם היומן, המשאב שיצר את הרשומה ביומן, חותמת הזמן (UTC) ומידע בסיסי אחר.

פרטי האירוע שנרשם ביומן נמצאים בשדה משנה שנקרא payload. ביומני ביקורת, השדה של המטען הייעודי נקרא protoPayload. הערך של השדה הזה הוא מבנה AuditLog, שמצוין על ידי הערך של השדה protoPayload.@type, שמוגדר כ-type.googleapis.com/google.cloud.audit.AuditLog.

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

בפורמט הישן:

  • השדה resource.type הוא bigquery_resource.
  • פרטים על הפעולה נכתבים בשדה protoPayload.serviceData. הערך של השדה הזה הוא מבנה של AuditData.

בפורמט החדש יותר:

  • השדה resource.type הוא bigquery_project או bigquery_dataset. המשאב bigquery_project מכיל רשומות ביומן שקשורות למשימות, והמשאב bigquery_dataset מכיל רשומות ביומן שקשורות לאחסון.
  • פרטים על הפעולה נכתבים בשדה protoPayload.metadata. הערך של השדה הזה הוא מבנה של BigQueryAuditMetadata.

מומלץ לצרוך יומנים בפורמט החדש יותר. מידע נוסף זמין במדריך להעברת יומני ביקורת.

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

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 5,
      "message": "Not found: Dataset my-project:my-dataset was not found in location US"
    },
    "authenticationInfo": { ... },
    "requestMetadata":  { ... },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
    "metadata": {
  },
  "resource": {
    "type": "bigquery_project",
    "labels": { .. },
  },
  "severity": "ERROR",
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  ...
}

לפעולות ב-BigQuery Reservations, הערך של protoPayload הוא מבנה של AuditLog, והשדות protoPayload.request ו-protoPayload.response מכילים מידע נוסף. הגדרות השדות מפורטות במאמר BigQuery Reservation API. למידע נוסף, קראו את המאמר מעקב אחרי BigQuery Reservations.

תצוגות של סכימת מידע ב-BigQuery

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

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

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

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

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

ב-GitHub תוכלו למצוא שאילתות לדוגמה של סכימת מידע, שמציגות את ניצול ה-slots וההזמנות של הארגון, את ביצוע המשימות ואת השגיאות במשימות. לדוגמה, השאילתה הבאה מספקת רשימה של שאילתות בהמתנה או פועלות. השאילתות האלה מסודרות לפי משך הזמן שחלף מאז שהן נוצרו באזור us:

SELECT
    creation_time,
    project_id,
    user_email,
    job_id,
    job_type,
    priority,
    state,
    TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), start_time,second) as running_time_sec
 FROM
   `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP()
    AND state != "DONE"
ORDER BY
    running_time_sec DESC

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

בנוסף לכתיבת שאילתות משלכם, אתם יכולים להשתמש בכלי המעקב של BigQuery במסוף Cloud de Confiance :

  • מעקב אחרי התקינות, ניצול המשאבים והמשימות. צפייה במרכזי בקרה של תקינות תפעולית ובתרשימי משאבים של BigQuery Admin, שמאפשרים לעקוב אחרי השימוש ב-slots, אחרי מספר המשימות שפועלות בו-זמנית ואחרי זמן הריצה של המשימות בארגון ובמכסות שהוקצו.
  • מעקב אחרי משימות. לחפש, לסנן ולקבץ הרצות של שאילתות ספציפיות בכל הארגון כדי לבדוק תרשימי הרצה של שאילתות, לזהות את צרכני ה-slots המובילים ולפתור בעיות במשימות בעייתיות.

מפת טלמטריה

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

בניגוד להרבה שירותי Cloud de Confiance by S3NS שכותבים יומני משימות תפעוליות ב-Cloud Logging, ב-BigQuery נכתבים נתוני טלמטריה של משימות תפעוליות בתצוגות של סכימת מידע כמו INFORMATION_SCHEMA.JOBS. התצוגות האלה מתעדות את שלבי הביצוע של השאילתות, את השימוש ב-slots, את הבייטים שחויבו ואת כל המשימות שנשלחו, כולל משימות שנכשלו ומשימות שעדיין לא הסתיימו.

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

יומני ביקורת לא נוצרים בכל שיבוש או כשל במשימה. לדוגמה, משימות שנכשלו לא יוצרות אירועים מסוג TableDataRead או TableDataChange, והאירוע jobCompletedEvent מתעד רק משימות שהושלמו בהצלחה. במאמר סקירה כללית על יומני הביקורת של BigQuery, בקטע גישה לנתונים, מפורטים תרחישים שבהם לא נוצרים יומני ביקורת.

בטבלה הבאה, כוכבית (*) בשם של תצוגת INFORMATION_SCHEMA מציינת וריאציות של תצוגות ספציפיות להיקף, כמו _BY_PROJECT,‏ _BY_USER,‏ _BY_FOLDER ו-_BY_ORGANIZATION.

תכונה או משאב מעקב תפעולי יומני ביקורת של Cloud
שאילתות ומשימות

תצוגות של סכימת מידע:

  • ‫JOBS*: הפעלה של משימות בזמן אמת ונתונים היסטוריים, מילי-שניות של מיקום, בייטים שחויבו, שלבי הפעלה וכל המשימות שנשלחו, בלי קשר לסטטוס ההשלמה
  • ‫JOBS_TIMELINE*: מצב המשימה והשימוש ב-slot לכל פרוסת זמן

Console:

thought מדדים: מדדי Cloud Monitoring, כמו query/count,‏ query/execution_times ו-job/num_in_flight.

שירות API: bigquery.googleapis.com.

המשאבים שנבדקים: משימות ב-JobService (משאב במעקב: bigquery_project).

יומני ביקורת: יומני גישה לנתונים באמצעות BigQueryAuditMetadata (אירועי JobInsertion ו-JobChange), שמתעדים מי שלח או ביטל משימה, סטטוס משימה, סוג הצהרה וטבלאות או תצוגות שאליהן בוצעה הפניה. סקירה כללית על יומני הביקורת של BigQuery

טבלאות ותצוגות

תצוגות של סכימת מידע:

  • TABLES: מטא-נתונים של טבלה
  • VIEWS: הצגת הגדרות ומטא-נתונים
  • ‫TABLE_STORAGE*: בייטים לוגיים ופיזיים וחיוב על אחסון
  • ‫PARTITIONS: מספר השורות במחיצה ונפח האחסון
  • ‫STREAMING_TIMELINE*: קצב העברת הנתונים ושגיאות בהזנת זרם נתונים
  • ‫WRITE_API_TIMELINE*: תפוקה ושגיאות בשידור כתיבה

מדדים: מדדי מעקב, כמו storage/stored_bytes ו-storage/table_count.

שירותי API: bigquery.googleapis.com ו-bigquerystorage.googleapis.com. ביומני הגישה לנתונים של BigQuery Storage API משתמשים ב-bigquery.googleapis.com, וביומני המדיניות שנדחתה משתמשים ב-bigquerystorage.googleapis.com.

המשאבים שנבדקים: טבלאות, תצוגות ותצוגות מהותיות ב-TableService וב-TableDataService, וסשנים של קריאה וסטרימינג של כתיבה באחסון ב-BigQueryRead וב-BigQueryWrite (משאבים במעקב: bigquery_dataset ו-bigquery_table).

יומני ביקורת: יומני גישה לנתונים באמצעות BigQueryAuditMetadata (אירועי TableDataRead ו-TableDataChange לקריאות, שינויים, שדות עם הפניות, משימת מקור וקריאות וכתיבות של BigQuery Storage API), וגם יומני פעילות אדמין, גישה לנתונים ואירועי מערכת לאירועי TableCreation, TableChange ו-TableDeletion, כולל שינויים במדיניות ניהול הזהויות והרשאות הגישה (IAM) של הטבלה ותאריכי תפוגה של הטבלה. סקירה כללית על יומני הביקורת של BigQuery

מערכי נתונים

תצוגות של סכימת מידע:

  • ‫SCHEMATA: המטא-נתונים של מערך הנתונים ותאריך התפוגה שמוגדר כברירת מחדל
  • ‫SCHEMATA_OPTIONS: אפשרויות ותוויות של מערך נתונים
  • ‫SCHEMATA_REPLICAS: סטטוס הרפליקציה בין אזורים שונים

שירות API: bigquery.googleapis.com.

משאבים שנבדקים: מערכי נתונים, כללי מדיניות IAM של מערכי נתונים ורשימות ACL של מערכי נתונים ב-DatasetService וב-IAMPolicy (משאב במעקב: bigquery_dataset).

יומני ביקורת: יומני Admin Activity ו-Data Access באמצעות BigQueryAuditMetadata (אירועי DatasetCreation,‏ DatasetChange ו-DatasetDeletion), כולל שינויים במדיניות ה-IAM של מערך הנתונים ב-bindingDeltas ועדכוני ACL ב-accessChanges. סקירה כללית על יומני הביקורת של BigQuery

משבצות והזמנות

תצוגות של סכימת מידע:

  • ‫RESERVATIONS*: הגדרות ההזמנה הנוכחיות
  • ‫RESERVATIONS_TIMELINE*: מטא-נתונים של הזמנה לפי דקה ופרטי התאמה אוטומטית לעומס (autoscaling)
  • ‫ASSIGNMENTS*: הקצאות של פרויקטים, תיקיות וארגונים
  • ‫CAPACITY_COMMITMENTS*: התחייבויות לקיבולת של משבצות

Console:

מדדים: מדדי מעקב, כמו slots/allocated ו-slots/total_available.

שירות API: ‏bigqueryreservation.googleapis.com ל-BigQuery Reservation API.

‫המשאבים שנבדקים: מקומות שמורים, התחייבויות לקיבולת והקצאות של מקומות שמורים ב-ReservationService (משאב במעקב: bigquery_project).

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

אבטחה ברמת העמודה ואנונימיזציה של נתונים

תצוגות של סכימת מידע:

  • ‫COLUMN_FIELD_PATHS: נתיבי עמודות בתצוגת עץ, תגי מדיניות והקצאות של מדיניות נתונים
  • ‫COLUMNS: סכימות של עמודות וסוגי נתונים

שירותי API: ‫datacatalog.googleapis.com לתגי מדיניות של Data Catalog, ‫bigquerydatapolicy.googleapis.com ל-BigQuery Data Policy API ו-bigquery.googleapis.com.

משאבים שנבדקים: טקסונומיות ותגי מדיניות ב-PolicyTagManager, כללי מדיניות נתונים ב-DataPolicyService ועמודות בטבלה עם תגי מדיניות (משאבים במעקב: audited_resource ו-bigquery_dataset).

יומני ביקורת: יומני Admin Activity ו-Data Access לניהול טקסונומיה ותגי מדיניות ולשינויים במדיניות IAM (תגי מדיניות ביקורת), ניהול מדיניות נתונים ועדכונים של מקבלי מענקים (רישום ביומן ביקורת של מדיניות נתונים ב-BigQuery) ויומני TableDataRead.fields לקריאות בעמודות מוגנות (סקירה כללית של יומני ביקורת ב-BigQuery).

פונקציות, כולל פונקציות UDF ותהליכים מאוחסנים

תצוגות של סכימת מידע:

  • ‫ROUTINES: הגדרות ומטא-נתונים של שגרות
  • ROUTINE_OPTIONS: אפשרויות של תרחישים
  • ‫PARAMETERS: פרמטרים של קלט ופלט של שגרה
  • ‫JOBS*: משימות להרצת שגרות

שירות API: bigquery.googleapis.com.

משאבים שעוברים ביקורת: פונקציות בהגדרת המשתמש (UDF), פונקציות של טבלאות ופרוצדורות מאוחסנות ב-RoutineService (משאבים במעקב: bigquery_dataset ו-bigquery_project).

יומני ביקורת: יומני Admin Activity ו-Data Access באמצעות BigQueryAuditMetadata (אירועי RoutineCreation,‏ RoutineChange ו-RoutineDeletion), וגם אירועי משימות צאצא להרצות של פרוצדורות מאוחסנות. סקירה כללית על יומני הביקורת של BigQuery

חיבורים חיצוניים

תצוגות של סכימת מידע:

  • ‫OBJECT_PRIVILEGES: הרשאות חיבור
  • ‫JOBS*: שאילתות מאוחדות ומשימות של פונקציות מרוחקות שמשתמשות בחיבורים

שירות API: bigqueryconnection.googleapis.com ל-BigQuery Connection API.

משאבים שנבדקים: חיבורים ומדיניות IAM של חיבורים ב-ConnectionService (משאב במעקב: audited_resource).

יומני ביקורת: יומני Admin Activity ו-Data Access ליצירת חיבורים, עדכוני פרטי כניסה, מחיקה, הצגה ברשימה ושינויים במדיניות IAM. יומני ביקורת של BigQuery Connection API

BigQuery sharing

תצוגות של סכימת מידע:

  • ‫SHARED_DATASET_USAGE: השימוש של המנויים בטבלאות של מערכי נתונים משותפים
  • ‫SCHEMATA_LINKS: מערכי נתונים מקושרים ומשאבים משותפים

מרכז בקרה: שיתוף מרכז הבקרה של מדדי השימוש.

שירות API: analyticshub.googleapis.com.

משאבים שנבדקים: חילופי נתונים, כרטיסי מוצר, מינויים וכללי מדיניות IAM של חילופי נתונים או כרטיסי מוצר ב-AnalyticsHubService (משאב במעקב: audited_resource).

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

שירות העברת נתונים ל-BigQuery

מדדים ויומנים:

שירות API: ‫bigquerydatatransfer.googleapis.com לשירות העברת נתונים ל-BigQuery API.

משאבים מבוקרים: הגדרות העברה, הפעלות של העברות ומקורות נתונים ב-DataTransferService (משאב במעקב: audited_resource).

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

קטלוגים וטבלאות של BigLake

תצוגות של סכימת מידע:

  • TABLES: מטא-נתונים של טבלה
  • ‫JOBS*: נתונים סטטיסטיים של שאילתות במאגר אובייקטים חיצוני (metadata_cache_statistics ו-object_storage_stats)

שירותי API: biglake.googleapis.com ו-bigquery.googleapis.com.

משאבים מבוקרים: קטלוגים של מטא-סטורים, מסדי נתונים, טבלאות ומחיצות ב-MetastoreService וב-HiveMetastoreService, וקטלוגים, מרחבי שמות וטבלאות של Apache Iceberg ב-IcebergCatalogService (משאבים מנוטרים: audited_resource ו-bigquery_dataset).

יומני ביקורת: יומני Admin Activity ו-Data Access לפעולות של מדיניות IAM בקטלוג, במסד הנתונים, במרחב השמות, בטבלה, במחיצה ובקטלוג. רישום ביומן ביקורת של BigLake

BigQuery Migration Service

סטטוס ודוחות:

  • סטטוס המשימה של תרגום SQL באצווה במסוף Cloud de Confiance
  • סטטוס תהליך העבודה ומשימת המשנה ב-BigQuery Migration API
  • דוחות סיכום של תרגומים ב-Cloud Storage

שירות API: ‫bigquerymigration.googleapis.com ל-BigQuery Migration API.

משאבים מבוקרים: תהליכי עבודה של העברה, משימות משנה של העברה ובקשות לתרגום SQL ב-MigrationService וב-SqlTranslationService (משאב במעקב: audited_resource).

יומני ביקורת: יומני Data Access ליצירה, להפעלה, להצגה, למחיקה ולצפייה ברשימה של תהליכי עבודה ומשימות משנה של העברה, ולתרגום של שאילתות SQL. רישום ביומן הביקורת של BigQuery Migration Service

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