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

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

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

מידע כללי על 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.

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

    1. סוכן שירות של Monitoring‏ (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. הלחצן Run query משתנה לRun on 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

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

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

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

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

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

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

מגבלות

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

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

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

תמחור

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

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