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

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

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

למידע כללי על Observability Analytics, אפשר לעיין במאמר שאילתות וניתוח של יומנים באמצעות Observability Analytics.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    לדוגמה, נניח שאתם רוצים לקבל התראה אם יותר מ-25% מהרשומות ביומן בחלון מבט לאחור הם ברמת חומרה ERROR. יוצרים שאילתה שמחשבת את אחוז רשומות היומן שרמת החומרה שלהן היא ERROR. השאילתה כותבת את הערך true בעמודה notify כשהאחוז הזה גבוה מ-25%. לאחר מכן יוצרים תנאי, מגדירים את הסוג ל-Boolean ומגדירים את התנאי למעקב אחרי העמודה notify.

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

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

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

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

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

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

רשומות ביומן שנבדקו

כדי שרשומה ביומן תיבדק על ידי שאילתת ה-SQL של מדיניות ההתראות, שני התנאים הבאים צריכים להתקיים:

  • חותמת הזמן של הקבלה של הרשומה ביומן, שמתעדת את מועד הקבלה של הרשומה ביומן על ידי Cloud Logging, צריכה להיות בתוך חלון מבט לאחור של מדיניות ההתראות.
  • חותמת הזמן של הרשומה ביומן, שמתעדת את מועד יצירת הרשומה, צריכה להיות בטווח של 15 דקות מחלון המבט לאחור.

לדוגמה, מדיניות ההתראות מבוססת ה-SQL שלכם כוללת חלון מבט לאחור של 60 דקות. הכלי Observability Analytics מריץ את שאילתת ה-SQL של מדיניות ההתראות בשעה 13:30. כדי שרשומה ביומן תיכלל בשאילתה, היא צריכה לעמוד בשני הקריטריונים הבאים:

  • חותמת הזמן שהתקבלה צריכה להיות בין 12:30 ל-13:30.
  • חותמת הזמן צריכה להיות בין 12:15 ל-13:45.

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

חלון מבט לאחור וזמן הפצת ההתראות

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

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

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

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

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

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

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

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

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

בקטע הזה מניחים ששדרגתם את קטגוריית היומן כדי להשתמש ב-Observability Analytics, כך שתוכלו להריץ שאילתות על נתוני היומנים ולהציג אותם בדף Observability Analytics. בנוסף, אנחנו מניחים שכבר יצרתם מערך נתונים מקושר ב-BigQuery בקטגוריה ביומן.

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

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

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

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

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

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

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

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

המסוף

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

    עוברים אל Observability Analytics

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

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

    למידע נוסף על כתיבת שאילתות 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

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

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

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

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

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

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

מגבלות

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

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

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

תמחור

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

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