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

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

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

מידע כללי על Log Analytics זמין במאמר שליחת שאילתות וניתוח יומנים באמצעות Log Analytics.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

משבצות על פי דרישה ומשבצות שמורות כפופות לתמחור BigQuery.

רשומות ביומן שעברו הערכה

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

מסוףGoogle Cloud

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

    מעבר אל Log Analytics

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

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

    מידע נוסף על כתיבת שאילתות SQL לתצוגות יומן זמין במאמר שליחת שאילתות לתצוגת יומן.

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

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

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

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

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

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

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

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

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

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

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

Cloud Monitoring API

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

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

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

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

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

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

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.

מגבלות

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

  • אי אפשר להריץ שאילתות על תצוגת ניתוח באמצעות מדיניות התראות שמבוססת על SQL.

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

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

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

תמחור

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

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