מבוא למעקב ב-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 Reservations, protoPayload הוא מבנה AuditLog, והשדות protoPayload.request ו-protoPayload.response מכילים מידע נוסף. הגדרות השדות מפורטות ב-BigQuery Reservation API. מידע נוסף זמין במאמר בנושא מעקב אחרי הזמנות של BigQuery.
תצוגות של BigQuery INFORMATION_SCHEMA
תצוגות INFORMATION_SCHEMA הן מקור נוסף לתובנות ב-BigQuery, שאפשר להשתמש בהן בשילוב עם מדדים ויומנים.
התצוגות האלה מכילות מטא-נתונים על משימות, מערכי נתונים, טבלאות וישויות אחרות ב-BigQuery. לדוגמה, אתם יכולים לקבל מטא-נתונים בזמן אמת לגבי עבודות BigQuery שהופעלו במהלך תקופה מסוימת, ואז לקבץ או לסנן את התוצאות לפי פרויקט, משתמש, טבלאות שהופנו אליהן ומאפיינים אחרים.
אתם יכולים להשתמש במידע הזה כדי לבצע ניתוח מפורט יותר של עומסי העבודה ב-BigQuery, ולענות על שאלות כמו:
- מהו ממוצע השימוש במשבצות לכל השאילתות ב-7 הימים האחרונים בפרויקט נתון?
- אילו משתמשים שלחו משימת טעינה של נתונים בכמות גדולה לפרויקט מסוים?
- אילו שגיאות סטרימינג התרחשו ב-30 הדקות האחרונות, מקובצות לפי קוד שגיאה?
כדאי לעיין במטא-נתונים של משימות, במטא-נתונים של סטרימינג ובמטא-נתונים של הזמנות כדי לקבל תובנות לגבי הביצועים של עומסי העבודה ב-BigQuery.
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 במסוף Google Cloud :
- מעקב אחרי תקינות וניצול משאבים. הצגת לוחות בקרה של תקינות תפעולית ותרשימי משאבים שעוקבים אחרי השימוש במשבצות זמן, הקיבולת והמקבילות של העבודות לאורך זמן בארגון ובשמירת המקום.
- מעקב אחרי משימות. אפשר לחפש, לסנן ולקבץ ביצועים של שאילתות נפרדות בארגון כדי לבדוק תרשימים של ביצוע שאילתות, לזהות את הצרכנים העיקריים של משבצות זמן ולפתור בעיות בעבודות.
המאמרים הבאים
- איך עוקבים אחרי משרות ומסננים אותן באמצעות הכלי לחיפוש משרות
- איך עוקבים אחרי תקינות המערכת וניצול המשאבים
- איך יוצרים תרשימים והתראות ל-BigQuery