מעקב אחרי שאילתות מתמשכות
אתם יכולים לעקוב אחרי שאילתות רציפות ב-BigQuery באמצעות הכלים הבאים של BigQuery:
בגלל משך ההרצה הארוך של שאילתה מתמשכת ב-BigQuery, יכול להיות שמדדים שבדרך כלל נוצרים עם השלמת שאילתת SQL לא יופיעו או לא יהיו מדויקים.
שימוש בתצוגות INFORMATION_SCHEMA
אתם יכולים להשתמש במספר תצוגות INFORMATION_SCHEMA כדי לעקוב אחרי שאילתות מתמשכות והזמנות של שאילתות מתמשכות.
צפייה בפרטי המשרה
אפשר להשתמש בתצוגה JOBS כדי לקבל מטא-נתונים של משימות של שאילתות מתמשכות.
השאילתה הבאה מחזירה את המטא-נתונים של כל השאילתות המתמשכות הפעילות. המטא-נתונים כוללים את חותמת הזמן של סימן המים של הפלט, שמייצגת את הנקודה שעד אליה השאילתה המתמשכת עיבדה נתונים בהצלחה.
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT start_time, job_id, user_email, query, state, reservation_id, continuous_query_info.output_watermark FROM `PROJECT_ID.region-REGION.INFORMATION_SCHEMA.JOBS` WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 day) AND continuous IS TRUE AND state = "RUNNING" ORDER BY start_time DESC
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
REGION: כל שם של אזור במערך נתונים. לדוגמה,region-us.
-
צפייה בפרטי ההקצאה של ההזמנה
אפשר להשתמש בתצוגות ASSIGNMENTS ו-RESERVATIONS כדי לקבל פרטים על הקצאת מקום שמור של שאילתות מתמשכות.
החזרת פרטי הקצאת הזמנות לשאילתות מתמשכות:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT reservation.reservation_name, reservation.slot_capacity FROM `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS` AS assignment INNER JOIN `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.RESERVATIONS` AS reservation ON (assignment.reservation_name = reservation.reservation_name) WHERE assignment.assignee_id = 'PROJECT_ID' AND job_type = 'CONTINUOUS';
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: המזהה של פרויקט הניהול שבבעלותו נמצאת ההזמנה. -
LOCATION: המיקום של ההזמנה. -
PROJECT_ID: המזהה של הפרויקט שמוקצה להזמנה. מוחזר רק מידע על שאילתות רציפות שפועלות בפרויקט הזה.
-
צפייה במידע על צריכת משבצות
אפשר להשתמש בתצוגות ASSIGNMENTS, RESERVATIONS ו-JOBS_TIMELINE כדי לקבל מידע על צריכת יחידות קיבולת (Slot) של שאילתות מתמשכות.
מידע על ניצול משבצות להחזרת נתונים בשאילתות מתמשכות:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT jobs.period_start, reservation.reservation_name, reservation.slot_capacity, SUM(jobs.period_slot_ms) / 1000 AS consumed_total_slots FROM `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS` AS assignment INNER JOIN `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.RESERVATIONS` AS reservation ON (assignment.reservation_name = reservation.reservation_name) INNER JOIN `PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.JOBS_TIMELINE` AS jobs ON ( UPPER(CONCAT('ADMIN_PROJECT_ID:LOCATION.', assignment.reservation_name)) = UPPER(jobs.reservation_id)) WHERE assignment.assignee_id = 'PROJECT_ID' AND assignment.job_type = 'CONTINUOUS' AND jobs.period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() GROUP BY 1, 2, 3 ORDER BY jobs.period_start DESC;
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: המזהה של פרויקט הניהול שבבעלותו נמצאת ההזמנה. -
LOCATION: המיקום של ההזמנה. -
PROJECT_ID: המזהה של הפרויקט שמוקצה להזמנה. מוחזר רק מידע על שאילתות רציפות שפועלות בפרויקט הזה.
-
אפשר גם לעקוב אחרי הזמנות של שאילתות מתמשכות באמצעות כלים אחרים, כמו Metrics Explorer ותרשימים של משאבים אדמיניסטרטיביים. מידע נוסף זמין במאמר בנושא מעקב אחרי הזמנות ב-BigQuery.
שימוש בתרשים של ביצוע השאילתה
אתם יכולים להשתמש בתרשים ההפעלה של שאילתות כדי לקבל תובנות לגבי הביצועים ונתונים סטטיסטיים כלליים של שאילתה מתמשכת. מידע נוסף זמין במאמר הצגת תובנות לגבי ביצועי שאילתות.
צפייה בהיסטוריית הפעולות
אפשר לראות את פרטי המשימות של שאילתות מתמשכות בהיסטוריית המשימות האישית או בהיסטוריית המשימות של הפרויקט. מידע נוסף זמין במאמר בנושא צפייה בפרטי המשימה.
חשוב לדעת שהרשימה ההיסטורית של המשימות ממוינת לפי שעת ההתחלה של המשימה, ולכן יכול להיות ששאילתות רציפות שפועלות כבר זמן מה לא יופיעו קרוב לתחילת הרשימה.
שימוש בכלי לחיפוש משרות
בכלי לבדיקת משימות, מסננים את המשימות כדי להציג שאילתות מתמשכות. לשם כך, מגדירים את המסנן Job category (קטגוריית משימות) לערך Continuous query (שאילתה מתמשכת).
שימוש ב-Cloud Monitoring
אפשר להשתמש ב-Cloud Monitoring כדי להציג מדדים שספציפיים לשאילתות רציפות ב-BigQuery. מידע נוסף זמין במאמרים יצירה של מרכזי בקרה, תרשימים והתראות ומדדים שזמינים להצגה חזותית.
התראה על שאילתות שנכשלו
במקום לבדוק באופן שגרתי אם השאילתות הרציפות נכשלו, כדאי ליצור התראה שתשלח לכם הודעה על כשל. אחת הדרכים לעשות זאת היא ליצור מדד מותאם אישית מבוסס-יומן ב-Cloud Logging עם מסנן למשרות שלכם, ומדיניות התראות ב-Cloud Monitoring שמבוססת על המדד הזה:
- כשיוצרים שאילתה מתמשכת, צריך להשתמש בקידומת מותאמת אישית של מזהה עבודה.
כמה שאילתות רציפות יכולות לחלוק את אותו הקידומת.
לדוגמה, אפשר להשתמש בקידומת
prod-כדי לציין שאילתה היא אילתת ייצור. נכנסים לדף Log-based Metrics במסוף Cloud de Confiance .
לוחצים על יצירת מדד. החלונית Create logs metric תופיע.
בקטע סוג המדד, בוחרים באפשרות מונה.
בקטע פרטים, נותנים שם למדד. לדוגמה,
CUSTOM_JOB_ID_PREFIX-metric.בקטע Filter selection, מזינים את הטקסט הבא בכלי לעריכת Build filter:
resource.type = "bigquery_project" protoPayload.resourceName : "projects/PROJECT_ID/jobs/CUSTOM_JOB_ID_PREFIX" severity = ERROR
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
CUSTOM_JOB_ID_PREFIX: השם של הקידומת המותאמת אישית של מזהה העבודה שהגדרתם לשאילתה מתמשכת.
-
לוחצים על יצירת מדד.
בתפריט הניווט, לוחצים על מדדים מבוססי-יומן. המדד שיצרתם מופיע ברשימת המדדים שהוגדרו על ידי המשתמש.
בשורה של המדד, לוחצים על עוד פעולות ואז על יצירת התראה מהמדד.
לוחצים על הבא. אין צורך לשנות את הגדרות ברירת המחדל בדף Policy configuration mode (מצב הגדרת מדיניות).
לוחצים על הבא. אין צורך לשנות את הגדרות ברירת המחדל בדף Configure alert trigger (הגדרת טריגר להתראה).
בוחרים את ערוצי ההתראות ומזינים שם למדיניות ההתראות.
לוחצים על יצירת מדיניות.
כדי לבדוק את ההתראה, מריצים שאילתה מתמשכת עם הקידומת המותאמת אישית של מזהה העבודה שבחרתם, ואז מבטלים אותה. יכול להיות שיחלפו כמה דקות עד שההתראה תגיע לערוץ ההתראות.
ניסיון חוזר של שאילתות שנכשלו
ניסיון חוזר להפעיל שאילתה מתמשכת שנכשלה יכול לעזור למנוע מצבים שבהם פייפליין רציף מושבת למשך זמן ממושך או שנדרשת התערבות אנושית כדי להפעיל אותו מחדש. כשמנסים להריץ מחדש שאילתה מתמשכת שנכשלה, חשוב לקחת בחשבון את הדברים הבאים:
- האם אפשר לעבד מחדש חלק מהנתונים שעובדו על ידי השאילתה הקודמת לפני שהיא נכשלה.
- איך לטפל בהגבלת ניסיונות חוזרים או להשתמש בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff).
אחת מהגישות האפשריות לאוטומציה של ניסיון חוזר של שאילתה היא:
יוצרים יעד ב-Cloud Logging על סמך מסנן הכללה שתואם לקריטריונים הבאים, כדי לנתב יומנים לנושא Pub/Sub:
resource.type = "bigquery_project" protoPayload.resourceName : "projects/PROJECT_ID/jobs/CUSTOM_JOB_ID_PREFIX" severity = ERROR
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
CUSTOM_JOB_ID_PREFIX: השם של הקידומת המותאמת אישית של מזהה העבודה שהגדרתם לשאילתה מתמשכת.
-
יוצרים פונקציית Cloud Run שמופעלת בתגובה ליומנים שתואמים למסנן שלכם שמתקבלים ב-Pub/Sub.
פונקציית Cloud Run יכולה לקבל את מטען הנתונים מהודעת Pub/Sub ולנסות להפעיל שאילתה רציפה חדשה באמצעות אותה תחביר SQL כמו השאילתה שנכשלה, אבל בתחילת התהליך, מיד אחרי שהעבודה הקודמת נעצרה.
לדוגמה, אתם יכולים להשתמש בפונקציה שדומה לזו:
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.