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

מדיניות התראות מבוססת-SQL ב-Observability Analytics מריצה מעת לעת שאילתות SQL על הנתונים שלכם ב-Cloud Trace, ושולחת לכם התראות כשהתוצאות עומדות בתנאים שאתם מציינים. המדיניות הזו מופעלת במנוע של 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 תומכים בשני סוגים של הערכה:

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

  • ‫Boolean: התנאי מתקיים כשעמודה בוליאנית ספציפית בטבלת התוצאות של השאילתה מכילה שורה עם הערך 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. מוודאים שקיים חשבון השירות של שירות המעקב ושהתפקידים הבאים מוקצים לו:

    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. הלחצן הפעלת שאילתה משתנה להפעלה ב-BigQuery.

  4. בטבלה Results בדף Observability Analytics, לוחצים על  Create alert.

    בדף 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

אפשר להשתמש ב-alertPolicies.create method כדי ליצור מדיניות התראות באופן פרוגרמטי. הסוג של מדיניות ההתראות 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.

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