מעקב אחרי תוצאות של שאילתות SQL באמצעות מדיניות התראות

אתם יכולים ליצור מדיניות התראות מבוססת-SQL ב-Observability Analytics. המדיניות הזו מבצעת שאילתות על נתוני המעקב שלכם באופן תקופתי, ושולחת לכם התראות כשהתוצאה של השאילתה עומדת בתנאים שציינתם.

מדיניות התראות מבוססת-SQL מופעלת במנוע BigQuery ונדרש מערך נתונים מקושר של BigQuery. מידע כללי על Observability Analytics זמין במאמר שאילתות וניתוח של עקבות באמצעות Observability Analytics.

איך פועלת מדיניות ההתראות

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

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

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

  • כדי לעקוב אחרי ניתוח מצטבר של נתוני העקבות, משלבים את Observability Analytics עם מדיניות התראות. בתרחיש הזה, משתמשים בשאילתות SQL כדי לשלוח שאילתות לתצוגה _AllSpans בדלי observability שנקרא _Trace. לבסוף, יוצרים את מדיניות ההתראות כדי לעקוב אחרי תוצאות שאילתת ה-SQL. סוג המדיניות הזה נקרא מדיניות התראות מבוססת-SQL.

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

    בהמשך המסמך מוסבר איך משתמשים במדיניות התראות מבוססת-SQL.

רכיבים של מדיניות התראות

מדיניות התראות שמבוססת על SQL מכילה תנאי ולוח זמנים:

  • התנאי מכיל את השאילתה, שהיא שאילתת SQL שמחפשת נתונים. התנאי גם מגדיר את הנסיבות שבהן תוצאת השאילתה גורמת ליצירת אירוע ב-Monitoring.

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

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

סוגי הערכות של מדיניות התראות שמבוססת על SQL

תנאים שעוקבים אחרי תוצאה של שאילתת SQL תומכים בשני סוגים של הערכה:

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

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

במדיניות התראות שעוקבת אחרי תוצאה של שאילתת SQL צריך להיות רק תנאי אחד.

כללי מדיניות בנושא התראות ו-BigQuery

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

כשמדיניות התראות מריצה שאילתת SQL, השאילתה הזו מורצת במנוע BigQuery ב Google Cloud פרויקט שבו מוגדרת מדיניות ההתראות. כברירת מחדל, שאילתות שמופעלות במנוע BigQuery משתמשות במשבצות על פי דרישה. משבצות על פי דרישה ומשבצות שמורות כפופות לתמחור של BigQuery.

אפשר גם להגדיר הזמנות ייעודיות של משבצות ב-BigQuery לפרויקט:

  1. יוצרים הזמנה עם משבצות זמן ייעודיות או מזהים הזמנה קיימת.
  2. איך יוצרים הקצאות של מקומות שמורים לפרויקט

חלון מבט לאחור וזמן ההפצה של האירוע

כשמדיניות התראות מתוזמנת להערכת התנאי שלה, Observability Analytics מעכב את ביצוע שאילתת ה-SQL בחמש דקות כדי לאפשר ל-Cloud Logging להוסיף לאינדקס את הנתונים שהתקבלו במהלך חלון מבט לאחור. לדוגמה, אם מדיניות ההתראות משתמשת בחלון מבט לאחור שמסתיים בשעה 14:00, מערכת Observability Analytics לא מפעילה את שאילתת ה-SQL עד השעה 14:05.

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

כשלים בשאילתות

שאילתות שמופעלות על ידי מדיניות התראות מבוססת-SQL עלולות להיכשל מסיבות שונות, כולל:

  • חשבון השירות של המעקב כבר לא קיים או שאין לו יותר את ההרשאות הנדרשות לקריאת נתוני העקבות שנשלחים לגביהם שאילתות.

  • זמן הביצוע של השאילתה חורג מחמש דקות.

  • אירעה שגיאה פנימית.

שאילתה שנכשלה יוצרת רשומה ביומן שמכילה את מזהה מדיניות ההתראות ואת סטטוס השגיאה. אתם יכולים להשתמש במדיניות התראות שמבוססת על יומן כדי ליצור התראה כששגיאה נרשמת ביומן.

לפני שמתחילים

בקטע הזה מניחים שיש לכם מערך נתונים מקושר ב-BigQuery לנתוני המעקב.

לפני שיוצרים מדיניות התראות שמבוססת על SQL, צריך לבצע את השלבים הבאים:

  1. כדי לקבל את ההרשאות שדרושות לשאילת נתוני מעקב וליצירת כללי מדיניות להתראות שמבוססים על SQL, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

  2. מוודאים שקיים חשבון השירות של Monitoring ושהתפקידים הבאים מוקצים לו:

    1. Monitoring Service Agent‏ (roles/monitoring.notificationServiceAgent) בפרויקט.
    2. BigQuery Data Viewer (roles/bigquery.dataViewer) במערך הנתונים המקושר של BigQuery.

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

  3. מגדירים את ערוצי ההתראות שאליהם יישלחו התראות. לצורך יתירות, מומלץ להגדיר כמה סוגים של ערוצי התראות. מידע נוסף מופיע במאמר בנושא יצירה וניהול של ערוצי התראות.

יצירת מדיניות התראות שמבוססת על SQL

כדי ליצור מדיניות התראות שמבוססת על SQL:

המסוף

  1. נכנסים לדף Observability Analytics במסוף Google Cloud :

    עוברים אל Observability Analytics

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. בדף Observability Analytics, מזינים שאילתת SQL בעורך השאילתות כדי לשלוח שאילתה לנתוני העקבות.

  3. בסרגל הכלים, לוחצים על Run on BigQuery (הפעלה ב-BigQuery).

    הכלי Observability Analytics מריץ את השאילתה במנוע BigQuery ומציג את התוצאות בטבלת Results.

    אם האפשרות Run on BigQuery לא מוצגת, לוחצים על Select query engine ואז על BigQuery. הלחצן Run query (הפעלת שאילתה) משתנה ל-Run on BigQuery (הפעלה ב-BigQuery).

  4. בטבלה תוצאות בדף Observability Analytics, לוחצים על  יצירת התראה.

    בדף Observability Analytics מוצג החלון Create sql alert policy, שבו שאילתת SQL מופיעה בקטע SQL query.

  5. בקטע Alert condition, מגדירים את התנאי ואת לוח הזמנים של מדיניות ההתראות.

  6. מגדירים את פרטי ההתראה של כללי מדיניות ההתראות.

    1. להוסיף ערוצי התראות ולהגדיר את תוכן ההתראות, כמו שורת נושא מותאמת אישית.

    2. אופציונלי: מוסיפים תוויות של מדיניות התראות ותיעוד.

    3. לוחצים על הבא.

  7. בודקים את מדיניות ההתראות ולוחצים על שמירה כדי ליצור אותה.

Terraform

  1. מתקינים ומגדירים את Terraform לפרויקט. בהגדרות של מרכז האפליקציות, בוחרים את פרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.

  2. ב-Cloud Shell, עוברים לספרייה שמכילה את ההגדרות של Terraform.

  3. בהגדרות של Terraform, מגדירים מופע של המשאב google_monitoring_alert_policy, כולל condition_sql.

  4. ב-Cloud Shell, מזינים terraform apply.

כדי לשנות את מדיניות ההתראות, מבצעים את העריכות הרצויות ומחילים מחדש את ההגדרות של Terraform. מידע נוסף מופיע במאמר בנושא ניהול מדיניות התראות באמצעות Terraform.

מידע כללי על שימוש ב- Google Cloud עם Terraform זמין במאמר Terraform עם Google Cloud.

REST

משתמשים ב-method ‏alertPolicies.create כדי ליצור מדיניות התראות באופן פרוגרמטי. הסוג של מדיניות ההתראות Condition חייב להיות MonitoringQueryLanguageCondition, שהוא מופע של SqlCondition. סוג התנאי הזה מאפשר להגדיר את התנאים של מדיניות ההתראות באמצעות SQL.

כדי להגדיר את לוח הזמנים, צריך להגדיר ערך periodicity לאחד מהשדות minutes, hours או days. לדוגמה, אם רוצים שהשאילתה תפעל כל 12 שעות, צריך להגדיר את המחזוריות של השדה hours ל-12.

כדי להגדיר את התנאי, משתמשים בשדות הבאים:

  • boolean_test: מגדיר את מדיניות ההתראות כך שהתנאי שלה מתקיים כששורה בעמודה בוליאנית בטבלת תוצאות השאילתה מכילה ערך True.
  • row_count_test: הגדרת מדיניות ההתראות כך שהתנאי שלה יתקיים כשמספר השורות בטבלת תוצאות השאילתה יעמוד בסף מסוים.

רשימה מלאה של השדות וההגדרות מופיעה במאמר SqlCondition במאמרי העזרה של ה-API בנושא Cloud Monitoring API.

מידע נוסף על Monitoring API למדיניות התראות זמין במאמר ניהול מדיניות התראות באמצעות API.

מגבלות

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

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

רשימה מלאה של המגבלות שקשורות למדיניות התראות מופיעה במאמר מגבלות ב-Monitoring.

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