מבוא למעקב ב-BigQuery
המעקב אחרי BigQuery מאפשר לכם לעקוב אחרי השימוש במשאבים, ביצוע המשימות והתקינות התפעולית של עומסי העבודה, כדי לזהות צווארי בקבוק ולשמור על האמינות.
מעקב ורישום ביומן הם חיוניים להפעלת אפליקציות אמינות בענן. עומסי העבודה ב-BigQuery לא שונים, במיוחד אם עומס העבודה הוא בנפח גבוה או שהוא קריטי למשימה.
מקורות המעקב משתנים בהתאם לתדירות הדגימה ולרמת הצבירה. לדוגמה, תצוגות של סכימת מידע מספקות לעיתים קרובות פירוט רב יותר מאשר מדדים של Cloud Monitoring. כתוצאה מכך, יכול להיות שתרשימי המדדים יהיו שונים באופן זמני מהנתונים בסכימת המידע, עד שההבדלים יצטמצמו בעקבות הצבירה. כשאתם מתכננים אסטרטגיית מעקב, חשוב לבדוק את זמן האחזור, הדיוק והנכונות בהתאם לדרישות שלכם.
מדדים
מדדים הם ערכים מספריים שנאספים במרווחי זמן קבועים וזמינים לניתוח. אתם יכולים להשתמש במדדים כדי:
- ליצור תרשימים ומרכזי בקרה.
- הפעלת התראות על תנאים או מצבים שדורשים התערבות אנושית.
- לנתח את היסטוריית הביצועים.
ב-BigQuery, המדדים הזמינים כוללים את מספר המשימות שפועלות, מספר הבייטים שנסרקו במהלך שאילתה והתפלגות זמני השאילתות. המדדים של שאילתה זמינים רק אחרי שהשאילתה מצליחה, ויכול להיות שיעברו עד שבע דקות עד שהם ידווחו. מדדים של שאילתות שנכשלו לא מדווחים. רשימה מלאה של המדדים הזמינים, כולל תדירות הדגימה, החשיפה והמגבלות שלהם, מופיעה בקטע Google Cloud 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 יוצר רשומות ביומן לפעולות כמו יצירה או מחיקה של טבלה, רכישת משבצות או הרצה של משימת טעינה. למידע נוסף על התחברות Google Cloud, ראו Cloud Logging.
יומן הוא אוסף של רשומות ביומן שאפשר רק להוסיף אליו. לדוגמה, אתם יכולים לכתוב רשומות ביומן משלכם ליומן בשם projects/PROJECT_ID/logs/my-test-log. בשירותים רבים שלGoogle Cloud , כולל BigQuery, נוצר סוג של יומן שנקרא יומני ביקורת. היומנים האלה מתעדים:
- פעילות ניהולית, כמו יצירה או שינוי של משאבים.
- גישה לנתונים, כמו קריאת נתונים שסופקו על ידי משתמשים ממשאב.
- אירועי מערכת שנוצרים על ידי מערכות Google, ולא על ידי פעולות של משתמשים.
יומני הביקורת נכתבים בפורמט JSON מובנה. סוג הנתונים הבסיסי של רשומות ביומן הוא המבנה LogEntry.Google Cloud המבנה הזה מכיל את שם היומן, המשאב שיצר את הרשומה ביומן, חותמת הזמן (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 במסוף Google Cloud :
- מעקב אחרי התקינות וניצול המשאבים. לצפות במרכזי בקרה של תקינות תפעולית ובתרשימי משאבים שעוקבים אחרי השימוש ב-slots, הקיבולת והמשימות שפועלות בו-זמנית לאורך זמן בארגון ובמאגרים שלכם.
- מעקב אחרי משימות. לחפש, לסנן ולקבץ הרצות של שאילתות ספציפיות בכל הארגון כדי לבדוק תרשימי הרצה של שאילתות, לזהות את צרכני ה-slots המובילים ולפתור בעיות במשימות בעייתיות.
המאמרים הבאים
- איך עוקבים אחרי משימות ומסננים אותן באמצעות סייר המשימות
- איך עוקבים אחרי התקינות והניצול של המשאבים
- איך יוצרים תרשימים והתראות ל-BigQuery