מבוא לניטור ב-BigQuery
מעקב ורישום ביומן הם חיוניים להפעלת אפליקציות אמינות בענן. עומסי עבודה של BigQuery לא יוצאים מכלל זה, במיוחד אם עומס העבודה שלכם כולל נפחים גדולים או שהוא קריטי. במאמר הזה מופיעה סקירה כללית של נתוני המעקב שזמינים ב-BigQuery.
ההבדלים בין מקורות הנתונים של המעקב והרישום תלויים בתדירות הדגימה או הצבירה. לדוגמה, יכול להיות שנתוני סכימת המידע יהיו זמינים ברמת פירוט גבוהה יותר מנתוני המדדים של Cloud Monitoring.
כתוצאה מכך, יכול להיות שתרשימים של מדדים עם רמת פירוט נמוכה יותר ייראו שונים מנתונים סטטיסטיים דומים של סכימת מידע. הצבירה תעזור לצמצם את הפערים. כשמתכננים פתרון לניטור, צריך להעריך את זמן התגובה לבקשה, את הדיוק ואת רמת הדיוק של המדדים בהשוואה לדרישות.
מדדים
מדדים הם ערכים מספריים שנאספים במרווחי זמן קבועים וזמינים לניתוח. אתם יכולים להשתמש במדדים כדי:
- ליצור תרשימים ומרכזי בקרה.
- הפעלת התראות על תנאים או מצבים שדורשים התערבות אנושית.
- ניתוח היסטוריית הביצועים.
במקרה של BigQuery, המדדים הזמינים כוללים את מספר המשימות שפועלות, כמה בייטים נסרקו במהלך שאילתה והתפלגות זמני השאילתות. המדדים של שאילתה יהיו זמינים רק אחרי שהשאילתה תצליח, ויכול להיות שיעברו עד שבע דקות עד שהם ידווחו. לא מדווחים על מדדים של שאילתות שנכשלו. רשימה מלאה של המדדים הזמינים, כולל שיעורי הדגימה, החשיפה והמגבלות שלהם, זמינה במאמר bigquery בקטע Google Cloud מדדים.
להשתמש ב-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 יוצר רשומות ביומן לפעולות כמו יצירה או מחיקה של טבלה, רכישת משבצות או הרצת משימת טעינה. מידע נוסף על רישום ביומנים של Google Cloudזמין במאמר בנושא Cloud Logging.
יומן הוא אוסף של רשומות ביומן שאפשר רק להוסיף לו רשומות. לדוגמה, אפשר לכתוב רשומות יומן משלכם ליומן שנקרא projects/PROJECT_ID/logs/my-test-log. הרבהGoogle Cloud שירותים, כולל BigQuery, יוצרים סוג של יומן שנקרא יומני ביקורת. היומנים האלה מתעדים:
- פעילות אדמיניסטרטיבית, כמו יצירה או שינוי של משאבים.
- גישה לנתונים, כמו קריאת פרטים שהמשתמשים סיפקו (UPD) ממקור.
- אירועים במערכת שנוצרים על ידי מערכות Google, ולא על ידי פעולות של משתמשים.
יומני הביקורת נכתבים בפורמט JSON מובנה. סוג הנתונים הבסיסי של רשומות ביומןGoogle Cloud הוא המבנה LogEntry. המבנה הזה מכיל את שם היומן, המשאב שיצר את רשומת היומן, חותמת הזמן (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, protoPayload הוא מבנה AuditLog, והשדות protoPayload.request ו-protoPayload.response מכילים מידע נוסף. הגדרות השדות מפורטות ב-BigQuery Reservation API. מידע נוסף זמין במאמר בנושא מעקב אחרי הזמנות של BigQuery.
תצוגות INFORMATION_SCHEMA ב-BigQuery
תצוגות INFORMATION_SCHEMA הן מקור נוסף לתובנות ב-BigQuery, שאפשר להשתמש בהן בשילוב עם מדדים ויומנים.
התצוגות האלה מכילות מטא-נתונים על משימות, מערכי נתונים, טבלאות וישויות אחרות ב-BigQuery. לדוגמה, אפשר לקבל מטא-נתונים בזמן אמת על העבודות ב-BigQuery שהופעלו במהלך תקופת זמן מסוימת, ואז לקבץ או לסנן את התוצאות לפי פרויקט, משתמש, טבלאות שהופנו אליהן ומאפיינים אחרים.
אתם יכולים להשתמש במידע הזה כדי לבצע ניתוח מפורט יותר של עומסי העבודה ב-BigQuery, ולענות על שאלות כמו:
- מהו ממוצע השימוש במשבצות לכל השאילתות ב-7 הימים האחרונים בפרויקט נתון?
- אילו משתמשים שלחו משימת טעינה של קבוצת נתונים לפרויקט מסוים?
- אילו שגיאות סטרימינג התרחשו ב-30 הדקות האחרונות, מקובצות לפי קוד שגיאה?
כדי לקבל תובנות לגבי הביצועים של עומסי העבודה ב-BigQuery, כדאי לעיין במטא-נתונים של עבודות, במטא-נתונים של סטרימינג ובמטא-נתונים של הזמנות.
ב-GitHub אפשר למצוא דוגמאות לשאילתות INFORMATION_SCHEMA שמציגות את השימוש במשבצות ובשמירת מקום בארגון, את ביצוע המשימות ואת שגיאות המשימות. לדוגמה, השאילתה הבאה מספקת רשימה של שאילתות שנמצאות בהמתנה או בהרצה. השאילתות האלה מסודרות לפי משך הזמן שעבר מאז שהן נוצרו באזור 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 Admin כדי לראות תרשימים שמציגים את השימוש במשבצות, את מספר המשימות שמתבצעות בו-זמנית ואת זמן הריצה של המשימות. למידע נוסף, ראו מעקב אחרי תקינות, ניצול משאבים ועבודות.