מדיניות התראות מיוצגת ב-Cloud Monitoring API על ידי אובייקט AlertPolicy, שמתאר קבוצה של תנאים שמצביעים על סטטוס לא תקין פוטנציאלי במערכת.
במסמך מתוארים הנושאים הבאים:
- איך מדיניות ההתראות מיוצגת ב-Monitoring API.
- סוגי התנאים ש-Monitoring API מספק עבור מדיניות התראות.
- איך ליצור מדיניות התראות באמצעות Google Cloud CLI או ספריות לקוח.
התכונה הזו נתמכת רק בפרויקטים של Google Cloud . בהגדרות של מרכז האפליקציות, בוחרים את הפרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.
המבנה של מדיניות התראות
המבנה AlertPolicy מגדיר את הרכיבים של מדיניות התראות. כשיוצרים מדיניות, מציינים ערכים בשדות AlertPolicy הבאים:
-
displayName: תווית תיאורית של המדיניות. -
documentation: מומלץ להשתמש בשדה הזה כדי לספק מידע שיעזור למשיבים להתראה. מידע נוסף זמין במאמר הוספת הערות להתראות עם תיעוד שהוגדר על ידי המשתמש. userLabels: תוויות שהוגדרו על ידי המשתמש ומצורפות למדיניות. התוויות האלה מוצגות בכללי מדיניות התראות, בהתראות ובהודעות. מידע על שימוש בתוויות עם התראות זמין במאמר בנושא הוספת הערות להתראות באמצעות תוויות.
conditions[]: מערך של מבניCondition.
combiner: אופרטור לוגי שקובע איך לטפל בכמה תנאים.
notificationChannels[]: מערך של שמות משאבים, שכל אחד מהם מזההNotificationChannel.
alertStrategy: מציין את הפרטים הבאים:- כמה מהר מערכת Monitoring סוגרת התראות כשנתונים מפסיקים להגיע.
- למדיניות התראות מבוססת-מדדים, האם מערכת Monitoring שולחת התראה כשהתראה נסגרת.
- במדיניות התראות שמבוססת על מדדים, האם מופעלות התראות חוזרות, ומהו מרווח הזמן בין ההתראות האלה. מידע נוסף זמין במאמר בנושא הגדרה של התראות חוזרות למדיניות התראות שמבוססת על מדדים.
אפשר גם לציין את השדה severity כשמשתמשים ב-Cloud Monitoring API ובמסוף Google Cloud . בשדה הזה אפשר להגדיר את רמת החומרה של ההתראות. אם לא מציינים חומרה, Cloud Monitoring מגדיר את החומרה של מדיניות ההתראות ל-No Severity.
יש שדות נוספים שאפשר להשתמש בהם, בהתאם לתנאים שיוצרים.
אם מדיניות ההתראות מכילה תנאי אחד, התראה נשלחת כשהתנאי הזה מתקיים. מידע על התראות כשמדיניות ההתראות כוללת כמה תנאים מופיע במאמרים מדיניות עם כמה תנאים ומתי Monitoring שולח התראות ויוצר התראות.
כשיוצרים או משנים את מדיניות ההתראות, מערכת Monitoring מגדירה גם שדות אחרים, כולל השדה name. הערך של השדה name הוא שם המשאב של מדיניות ההתראות, שמזהה את המדיניות. שם המשאב מופיע בפורמט הבא:
projects/PROJECT_ID/alertPolicies/POLICY_ID
בביטוי הקודם:
- PROJECT_ID: מזהה הפרויקט. בהגדרות של מרכז האפליקציות, בוחרים את הפרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.
- POLICY_ID: המזהה של מדיניות ההתראות
סוגי התנאים ב-API
Cloud Monitoring API תומך במגוון סוגי תנאים במבנה Condition. יש כמה סוגים של תנאים לכללי מדיניות של התראות שמבוססים על מדדים, וסוג אחד לכללי מדיניות של התראות שמבוססים על יומנים. בקטעים הבאים מתוארים סוגי התנאים הזמינים.
תנאים לכללי מדיניות התראות שמבוססים על מדדים
כדי ליצור מדיניות התראות שעוקבת אחרי נתוני מדדים, כולל מדדים שמבוססים על יומנים, אפשר להשתמש בסוגי התנאים הבאים:
תנאים להערכת מדדים שמבוססים על מסננים
התנאים MetricAbsence ו-MetricThreshold משתמשים במסנני מעקב כדי לבחור את נתוני הסדרות העיתיות למעקב. שדות אחרים במבנה התנאי מציינים איך לסנן, לקבץ ולצבור את הנתונים. מידע נוסף על המושגים האלה מופיע במאמר בנושא סינון וצבירה: מניפולציה של סדרות זמן.
אם משתמשים בסוג התנאי MetricAbsence, אפשר ליצור תנאי שמתקיים רק כשכל סדרות הזמן לא קיימות. בתנאי הזה נעשה שימוש בפרמטר aggregations כדי לצבור כמה סדרות זמן לסדרת זמן אחת. מידע נוסף מופיע במאמרי העזרה של ה-API בנושא MetricAbsence.
כדי להגדיר מדיניות התראה על היעדר מדדים, צריך לוודא שנכתבו נתונים בעבר. מידע נוסף זמין במאמר בנושא יצירת מדיניות התראה על היעדר מדדים.
אם רוצים לקבל התראה על סמך ערך צפוי, צריך להגדיר את מדיניות ההתראות כך שתשתמש בסוג התנאי MetricThreshold ותגדיר את השדה forecastOptions. אם לא מגדירים את השדה הזה, הנתונים שנמדדו מושווים לסף.
עם זאת, אם השדה הזה מוגדר, הנתונים החזויים מושווים לסף. מידע נוסף זמין במאמר בנושא יצירת מדיניות התראות לגבי ערכים חזויים של מדדים.
תנאים להערכת מדדים שמבוססים על PromQL
תנאי PrometheusQueryLanguageCondition משתמש בשאילתות של Prometheus Query Language (PromQL) כדי לבחור נתונים של סדרות זמן ולבצע בהם מניפולציות לצורך מעקב.
התנאי יכול לחשב יחס בין מדדים, להעריך השוואות בין מדדים ועוד.
אם משתמשים בתנאי PrometheusQueryLanguageCondition, הוא חייב להיות התנאי היחיד במדיניות ההתראות. מידע נוסף זמין במאמר בנושא כללי מדיניות ליצירת התראות עם PromQL.
תנאים להצגת התראות על יחסים
אפשר ליצור מדיניות התראות של סף מדד כדי לעקוב אחרי היחס בין שני מדדים. אפשר ליצור את כללי המדיניות האלה באמצעות סוג התנאי MetricThreshold או PrometheusQueryLanguageCondition.
אפשר גם להשתמש ב-PromQL ישירות במסוף Google Cloud . אי אפשר ליצור או לנהל תנאים שמבוססים על יחסים באמצעות הממשק הגרפי ליצירת תנאי סף.
מומלץ להשתמש ב-PromQL כדי ליצור מדיניות התראות שמבוססת על יחסים.
עם PromQL אפשר ליצור שאילתות חזקות וגמישות יותר מאלה שאפשר ליצור באמצעות סוג התנאי MetricTheshold ומסנני Monitoring.
לדוגמה, באמצעות תנאי PrometheusQueryLanguageCondition, אפשר לחשב את היחס בין מדד מסוג gauge לבין מדד מסוג delta.
אם משתמשים בתנאי MetricThreshold, המונה והמכנה של היחס צריכים להיות בעלי אותו MetricKind.
רשימה של מדדים והמאפיינים שלהם זמינה במאמר רשימות מדדים.
באופן כללי, מומלץ לחשב יחסים על סמך סדרות זמנים שנאספו עבור סוג מדד יחיד, באמצעות ערכי תוויות. יחס שמחושב על סמך שני סוגים שונים של מדדים עלול להיות מושפע מאנומליות בגלל תקופות דגימה שונות וחלונות יישור שונים.
לדוגמה, נניח שיש לכם שני סוגים שונים של מדדים, ספירה כוללת של RPC וספירה של שגיאות RPC, ואתם רוצים לחשב את היחס בין RPC עם שגיאות לבין סה"כ RPC. בקשות ה-RPC שלא הצליחו נספרות בסדרת הזמן של שני סוגי המדדים. לכן, יכול להיות שכשתבצעו יישור של סדרת הזמן, קריאת RPC לא מוצלחת לא תופיע באותו מרווח יישור בשתי סדרות הזמן. יכולות להיות לכך כמה סיבות, כולל:
- מכיוון שיש שתי סדרות זמן שונות שמתעדות את אותו אירוע, יש שני ערכים בסיסיים של מונה שמבצעים את האיסוף, והם לא מתעדכנים באופן אטומי.
- יכול להיות ששיעורי הדגימה יהיו שונים. כשסדרות הזמן מיושרות לתקופה משותפת, יכול להיות שהספירות של אירוע יחיד יופיעו במרווחי יישור סמוכים בסדרת הזמן של המדדים השונים.
ההבדל במספר הערכים במרווחי ההתאמה המקבילים יכול להוביל לערכי יחס לא הגיוניים של error/total, כמו 1/0 או 2/1.
יחסים של מספרים גדולים יותר לא צפויים להניב ערכים חסרי משמעות. כדי לקבל מספרים גדולים יותר, אפשר לבצע צבירה באמצעות חלון התאמה ארוך יותר מתקופת הדגימה, או באמצעות קיבוץ נתונים של תוויות מסוימות. הטכניקות האלה ממזערות את ההשפעה של הבדלים קטנים במספר הנקודות במרווח נתון. כלומר, פער של שתי נקודות משמעותי יותר כשמספר הנקודות הצפוי במרווח הוא 3 מאשר כשמספר הנקודות הצפוי הוא 300.
אם אתם משתמשים בסוגי מדדים מובנים, יכול להיות שלא תהיה לכם ברירה אלא לחשב יחסים בין סוגי מדדים כדי לקבל את הערך שאתם צריכים.
אם אתם מתכננים מדדים בהתאמה אישית שעשויים לספור את אותו הדבר – כמו בקשות RPC שמחזירות סטטוס שגיאה – בשני מדדים שונים, כדאי לשקול במקום זאת מדד יחיד, שכולל כל ספירה רק פעם אחת. לדוגמה, נניח שאתם סופרים בקשות RPC ורוצים לעקוב אחרי היחס בין בקשות RPC לא מוצלחות לבין כל בקשות ה-RPC. כדי לפתור את הבעיה, צריך ליצור סוג מדד יחיד לספירת בקשות RPC, ולהשתמש בתווית כדי לתעד את הסטטוס של הקריאה, כולל הסטטוס OK. לאחר מכן, כל ערך סטטוס, שגיאה או 'OK', מתועד על ידי עדכון של מונה יחיד למקרה הזה.
תנאי למדיניות התראות מבוססת-יומן
כדי ליצור מדיניות התראות שמבוססת על יומנים, וששולחת לכם התראה כשמופיעה בערכי היומן הודעה שתואמת למסנן, משתמשים בסוג התנאי LogMatch. אם משתמשים בLogMatch
תנאי, הוא חייב להיות התנאי היחיד במדיניות ההתראות.
אל תנסו להשתמש בסוג התנאי LogMatch בשילוב עם מדדים מבוססי-יומן. מדיניות התראות שעוקבת אחרי מדדים מבוססי-יומנים היא מדיניות מבוססת-מדדים. מידע נוסף על בחירה בין מדיניות התראות שמנטרת מדדים מבוססי-יומן או רשומות ביומן זמין במאמר מעקב אחרי היומנים.
מדיניות ההתראות שמופיעה בדוגמאות במסמך ניהול מדיניות התראות באמצעות API היא מדיניות התראות שמבוססת על מדדים, אבל העקרונות זהים גם למדיניות התראות שמבוססת על יומנים. מידע ספציפי על מדיניות התראות מבוססת-יומן מופיע במאמר יצירת מדיניות התראות מבוססת-יומן באמצעות Monitoring API במסמכי התיעוד של Cloud Logging.
איך משייכים מדיניות התראות לאפליקציה ב-App Hub
Google Cloud יוצרת מרכזי בקרה שעוזרים לכם לעקוב אחרי האפליקציות ב-מרכז האפליקציות. בלוחות הבקרה האלה מוצג מידע כמו נתוני יומן ומדדים של האפליקציות, השירותים ועומסי העבודה שמהווים חלק מהאפליקציה. במרכזי הבקרה האלה מוצגות גם מדיניות התראות וההתראות שקשורות אליה, אם המדיניות הזו משויכת לשירות או לעומס עבודה של אפליקציה. מידע נוסף על מעקב אחרי אפליקציות זמין במאמר הצגת טלמטריה של אפליקציות.
כדי לשייך מדיניות התראות לאפליקציה ב-מרכז האפליקציות, צריך לצרף למדיניות תוויות עם המפתחות הבאים:
apphub_application_locationapphub_application_idapphub_service_idאוapphub_workload_id
userLabels בייצוג ה-JSON של מדיניות התראות יכול להיראות כך:
"userLabels": {
"apphub_service_id": "my-service-id",
"apphub_application_location": "my-app-location",
"apphub_application_id": "my-app"
},
לפני שמתחילים
לפני שכותבים קוד שמשתמש בממשק ה-API, צריך:
- חשוב להכיר את המושגים הכלליים ואת המינוח שמשמשים במדיניות בנושא התראות. מידע נוסף זמין במאמר סקירה כללית על התראות.
- צריך לוודא ש-Cloud Monitoring API מופעל. מידע נוסף זמין במאמר בנושא הפעלת ה-API.
- אם אתם מתכננים להשתמש בספריות לקוח, אתם צריכים להתקין את הספריות בשפות שבהן אתם רוצים להשתמש. פרטים נוספים זמינים במאמר ספריות לקוח. תמיכה ב-API להתראות זמינה רק בשפות C#, Go, Java, Node.js ו-Python.
אם אתם מתכננים להשתמש ב-Google Cloud CLI, אתם צריכים להתקין אותו. עם זאת, אם אתם משתמשים ב-Cloud Shell, Google Cloud CLI כבר מותקן.
במאמר הזה מופיעות גם דוגמאות לשימוש בממשק
gcloud. שימו לב: כל הדוגמאות שלgcloudמניחות שהפרויקט הנוכחי כבר הוגדר כיעד (gcloud config set project [PROJECT_ID]), ולכן הפעלות לא כוללות את הדגל--projectהמפורש. המזהה של הפרויקט הנוכחי בדוגמאות הואa-gcp-project. בהגדרות של מרכז האפליקציות, בוחרים את הפרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.
-
כדי לקבל את ההרשאות שנדרשות ליצירה ולשינוי של מדיניות התראות באמצעות Cloud Monitoring API, צריך לבקש מהאדמין להקצות לכם את התפקיד Monitoring AlertPolicy Editor (
roles/monitoring.alertPolicyEditor) ב-IAM בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מידע מפורט על תפקידי IAM ב-Monitoring זמין במאמר בקרת גישה באמצעות ניהול זהויות והרשאות גישה.
תכננו את האפליקציה כך שקריאות ל-Cloud Monitoring API שמשנות את המצב של מדיניות התראות בGoogle Cloud פרויקט יתבצעו בשרשור יחיד. לדוגמה, קריאות API של thread יחיד שיוצרות, מעדכנות או מוחקות מדיניות התראות.
יצירת מדיניות התראות
כדי ליצור מדיניות התראות בפרויקט, משתמשים ב-method alertPolicies.create. מידע על הפעלת השיטה הזו, על הפרמטרים שלה ועל נתוני התגובה מופיע בדף העזרה alertPolicies.create.
אפשר ליצור מדיניות מקובצי JSON או YAML.
Google Cloud CLI מקבל את הקבצים האלה כארגומנטים, ואפשר לקרוא קובצי JSON באופן פרוגרמטי, להמיר אותם לאובייקטים של AlertPolicy וליצור מהם כללי מדיניות באמצעות השיטה alertPolicies.create. אם יש לכם קובץ הגדרות JSON או YAML של Prometheus עם כלל התראות, אז ה-CLI של gcloud יכול להעביר אותו למדיניות התראות של Cloud Monitoring עם תנאי PromQL. מידע נוסף זמין במאמר בנושא העברה של כללי התראות ומקבלים מ-Prometheus.
כל מדיניות התראות שייכת לפרויקט היקף של היקף המדדים בפרויקט. כל פרויקט יכול להכיל עד 2,000 כללי מדיניות.
כשמבצעים קריאות ל-API, צריך לספק 'מזהה פרויקט'. משתמשים במזהה של פרויקט ההיקף של היקף המדדים כערך. בדוגמאות האלה, המזהה של פרויקט ההיקף של היקף המדדים הוא a-gcp-project.
בדוגמאות הבאות מוצג תהליך היצירה של מדיניות התראות, אבל לא מוסבר איך ליצור קובץ JSON או YAML שמתאר מדיניות התראות. במקום זאת, הדוגמאות מניחות שקיים קובץ בפורמט JSON, ומדגימות איך לשלוח את קריאה ל-API. דוגמאות לקובצי JSON מופיעות במאמר מדיניות לדוגמה. מידע כללי על מעקב אחרי יחסי מדדים זמין במאמר יחסי מדדים.
gcloud
כדי ליצור מדיניות התראות בפרויקט, משתמשים בפקודה gcloud monitoring
policies create. בדוגמה הבאה נוצרת מדיניות התראות ב-a-gcp-project מהקובץ rising-cpu-usage.json:
gcloud monitoring policies create --policy-from-file="rising-cpu-usage.json"
אם הפקודה מסתיימת ללא שגיאות, היא מחזירה את השם של המדיניות החדשה, למשל:
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
הקובץ rising-cpu-usage.json מכיל את ה-JSON של מדיניות עם שם התצוגה 'שיעור שינוי גבוה של CPU'. פרטים על המדיניות הזו זמינים במאמר מדיניות שיעור השינוי.
מידע נוסף מופיע במפרט של השיטה ב-gcloud monitoring policies create.
C#
כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
לאובייקט AlertPolicy שנוצר יהיו שדות נוספים.
למדיניות עצמה יהיו השדות name, creationRecord ו-mutationRecord. בנוסף, לכל תנאי במדיניות מוקצה גם name.
אי אפשר לשנות את השדות האלה מבחוץ, ולכן אין צורך להגדיר אותם כשיוצרים מדיניות. אף אחת מדוגמאות ה-JSON שמשמשות ליצירת מדיניות לא כוללת אותם, אבל אם מאחזרים מדיניות שנוצרה מהן אחרי היצירה, השדות יופיעו.
הגדרה של התראות חוזרות למדיניות התראות שמבוססת על מדדים
כברירת מחדל, מדיניות התראות שמבוססת על מדדים שולחת התראה אחת לכל ערוץ התראות כשהתראה נפתחת. עם זאת, אפשר לשנות את התנהגות ברירת המחדל ולהגדיר מדיניות התראות לשליחה חוזרת של התראות לכל ערוצי ההתראות או לחלק מהם. ההתראות החוזרות האלה נשלחות לגבי התראות עם הסטטוסים 'פתוח' או 'אושר'. המרווח בין ההתראות האלה חייב להיות לפחות 30 דקות ולא יותר מ-24 שעות, והוא מצוין בשניות.
כדי להגדיר התראות חוזרות, צריך להוסיף להגדרות של מדיניות ההתראות אובייקט AlertStrategy שמכיל לפחות אובייקט NotificationChannelStrategy אחד.
לאובייקט NotificationChannelStrategy יש שני שדות:
renotifyInterval: המרווח בשניות בין התראות חוזרות.אם משנים את הערך של השדה
renotifyIntervalכשמתקבלת התראה על מדיניות ההתראות, קורה אחד מהדברים הבאים:- מדיניות ההתראות שולחת התראה נוספת.
- מדיניות ההתראות מפעילה מחדש את תקופת המרווח.
notificationChannelNames: מערך של שמות משאבים של ערוצי התראות, שהם מחרוזות בפורמטprojects/PROJECT_ID/notificationChannels/CHANNEL_ID, כאשר CHANNEL_ID הוא ערך מספרי. במאמר רשימת ערוצי התראות בפרויקט מוסבר איך לאחזר את מזהה הערוץ.
לדוגמה, בדוגמת ה-JSON הבאה מוצגת אסטרטגיית התראה שהוגדרה לשליחת התראות חוזרות כל 1,800 שניות (30 דקות) לערוץ התראות אחד:
"alertStrategy": {
"notificationChannelStrategy": [
{
"notificationChannelNames": [
"projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
],
"renotifyInterval": "1800s"
}
]
}
כדי להפסיק זמנית את ההתראות החוזרות, אפשר לדחות אותן. כדי למנוע התראות חוזרות, צריך לערוך את מדיניות ההתראות באמצעות ה-API ולהסיר את האובייקט NotificationChannelStrategy.