בדף הזה מוסבר איך להעביר כללי התרעה של Prometheus למדיניות התרעה מבוססת-PromQL ב-Cloud Monitoring. תהליך ההעברה שימושי אם אתם משתמשים ב-PromQL בסביבות מחוץ ל- Google Cloud. העברה של כללי ההתראות של Prometheus ל-Cloud Monitoring מאפשרת לכם לנהל את כל מדיניות ההתראות בסביבה אחת.
מידע כללי על מדיניות התראות שמבוססת על PromQL זמין במאמר סקירה כללית על התראות ב-PromQL.
אפשר גם לייבא מרכזי בקרה של Grafana. מידע נוסף זמין במאמר ייבוא לוחות בקרה של Grafana ל-Cloud Monitoring.
איך ההעברה פועלת
ב-CLI של gcloud, אפשר להעביר את כללי ההתראה והנמענים הקיימים כדי ליצור כללי מדיניות התראות וערוצי התראות ב-Cloud Monitoring. באמצעות ה-CLI של gcloud אפשר לבצע העברות מהסוגים הבאים:
אם מספקים קובץ תצורה של Prometheus עם כלל התראה, ה-CLI של gcloud יוצר מדיניות התראה שמבוססת על PromQL.
אתם יכולים לספק כמה קובצי הגדרות של Prometheus בו-זמנית כדי ליצור כמה מדיניות התראות שמבוססת על PromQL.
אם מספקים קובץ של Alertmanager של Prometheus עם לפחות נמען אחד, ה-CLI של gcloud ממיר כל נמען לערוץ התראות מקביל ב-Monitoring.
אם מספקים קובץ Prometheus Alertmanager וקובץ תצורה של Prometheus בו-זמנית, ה-CLI של gcloud יוצר את מדיניות ההתראות ואת ערוצי ההתראות, ואז משייך כל ערוץ התראות חדש למדיניות ההתראות החדשה.
אם מספקים כמה קובצי הגדרה עם כללי התראה, ה-CLI של gcloud מקצה כל ערוץ התראה מקובץ Alertmanager לכל מדיניות התראה חדשה.
אם כלל ההתראות של Prometheus מפנה למדד מותאם אישית, ה-CLI של gcloud דורש תיאור מדד שווה ערך כדי ליצור את מדיניות ההתראות.
קובצי ההגדרות של Prometheus וקובצי Prometheus Alertmanager צריכים להיות בפורמט של קובצי כללים תקינים של Prometheus ב-YAML או ב-JSON.
מיפוי שדות
ה-CLI של gcloud ממפה שדות בין כלל התראה של Prometheus לבין מדיניות התראות של Cloud Monitoring באופן הבא:
| כלל התראות של Prometheus | מדיניות התראות ב-Cloud Monitoring |
|---|---|
alert |
conditionPrometheusQueryLanguage.alertRule |
expr |
conditionPrometheusQueryLanguage.query |
for |
conditionPrometheusQueryLanguage.duration |
labels |
conditionPrometheusQueryLanguage.labels |
annotations: "summary" |
documentation.subject |
annotations: "description" |
documentation.content |
Google Cloud משתני תיעוד בכללי התראות של Prometheus שהועברו
Prometheus משתמש בתבניות של שדות התראה כדי להגדיר משתנים בהערות ובתגיות של כללי התראה. כשמעבירים כללי התראה של Prometheus שיש להם תבניות של שדות התראה, Cloud Monitoring ממיר את התבניות למשתני תיעוד של Cloud Monitoring באופן הבא:
| תבנית שדה ההתראה של Prometheus | משתנה של מאמרי עזרה ב-Cloud Monitoring |
|---|---|
{{$value}} |
המשתנה הזה הוא הטמעה של |
{{humanize $value}} |
המשתנה הזה הוא הטמעה של |
{{$labels}} |
${metric_or_resource.labels} |
{{humanize $labels}} |
${metric_or_resource.labels} |
{{$labels.key}} |
מופיע כ-
|
{{humanize $labels.<key>}} |
מופיע כ-
|
העברה של כללי התראה ונמענים מ-Prometheus
כדי להעביר את כללי ההתראות של Prometheus למדיניות התראות מבוססת-PromQL ב-Cloud Monitoring, משתמשים בפקודה gcloud monitoring policies
migrate. הפקודה הזו מאפשרת גם להעביר את מקבלי הנתונים של Prometheus לערוצי ההתראות של Cloud Monitoring.
- כדי להעביר כלל התראה, צריך שיהיה לכם קובץ כללים של Prometheus בפורמט YAML או JSON שמכיל את כלל ההתראה.
כדי להעביר נמען, צריך קובץ YAML או JSON של Prometheus Alertmanager שמכיל את הנמען.
Google Cloud לא תומך בהעברת כללי הקלטה של Prometheus. כדי להשתמש בכללי הקלטה, מומלץ להשתמש בכלי להערכת כללים שמוטמע באופן עצמאי.
יצירת מדיניות התראות מקובץ תצורה של Prometheus
כדי ליצור מדיניות התראות מקובץ תצורה של Prometheus, מריצים את הפקודה הבאה. אפשר ליצור כמה כללי התראה על ידי ציון כמה נתיבי קבצים:
gcloud monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2
יצירת ערוצי התראות מקובץ תצורה של Prometheus Alertmanager
כדי ליצור ערוצי התראות מקובץ הגדרות של Prometheus Alertmanager, מריצים את הפקודה הבאה:
gcloud monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
יצירה של כללי מדיניות התראות וערוצי התראות בו-זמנית
כדי ליצור מדיניות התראות מקובצי תצורה של Prometheus וגם ליצור ערוצי התראות מקובץ תצורה של Prometheus Alertmanager, מריצים את הפקודה הבאה:
gcloud monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2 \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
דוגמה
יש לכם קובץ תצורה של Prometheus עם כלל התראה ששולח התראה אם השימוש במעבד נשאר מעל 75% למשך דקה אחת. כלל ההתראה מוגדר באופן הבא:
groups:
- name: Utilization_Alerts
interval: 30s
rules:
- alert: CPU_Utilization_Over_75
expr: compute_googleapis_com:instance_cpu_utilization > 75
for: 60s
labels:
severity: page
annotations:
subject: "Subject: ${metric.label.value}"
description: "CPU utilization is over 75%"
יש לכם גם קובץ Prometheus AlertManager שמכיל נמענים של אימייל, PagerDuty ו-webhook.
receivers: - name: 'team-emails' email_configs: - to: EMAIL_ADDRESS - name: 'team-pager' pagerduty_configs: - service_key: SERVICE_KEY - name: 'team-webhook' webhook_configs: - url: WEBHOOK_ADDRESS
כדי ליצור את מדיניות ההתראות ואת ערוץ ההתראות, מריצים את הפקודה הבאה:
gcloud monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_CONFIG_FILE \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_ALERTMANAGER_FILE
ה-CLI של gcloud יוצר מדיניות התראות כמו בדוגמה הבאה:
{
"name": "projects/PROJECT_ID/alertPolicies/POLICY_ID",
"displayName": "Utilization_Alerts/CPU_Utilization_Over_75",
"documentation": {
"content": "CPU utilization is over 75%",
"mimeType": "text/markdown",
"subject": "Subject: ${metric.label.value}"
},
"userLabels": {},
"conditions": [
{
"name": "projects/PROJECT_ID/alertPolicies/POLICY_ID/conditions/CONDITION_ID",
"displayName": "CPU_Utilization_Over_75"
"conditionPrometheusQueryLanguage": {
"alertRule": "CPU_Utilization_Over_75",
"duration": "60s",
"evaluationInterval": "30s",
"labels": {
"severity": "page"
},
"query": "compute_googleapis_com:instance_cpu_utilization > 75",
"ruleGroup": "Utilization_Alerts"
}
}
],
"alertStrategy": {},
"combiner": "OR",
"enabled": true,
"notificationChannels": [
"projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_1",
"projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_2",
"projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_3"
]
}
העברת כללי התראה מהשירות המנוהל ל-Prometheus
Google Cloud configures managed rule evaluation for שירות מנוהל ל-Prometheus by using the Rules, ClusterRules, and GlobalRules custom resources.
כדי להעביר את המשאבים האלה למדיניות התראות שמבוססת על Google Cloud PromQL:
מעתיקים את הקטע
groupsשל המשאב המותאם אישית אל קובץ כללים חדש של Prometheus.מעבירים את קובץ הכללים באמצעות ה-CLI של gcloud.
לדוגמה, יש לכם את המשאב המותאם אישית Rules הבא:
apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
namespace: NAMESPACE_NAME
name: example-rules
spec:
groups:
- name: example
interval: 30s
rules:
- alert: FewerThanTenInstancesUp
expr: sum(up) < 10
קובץ הכללים של Prometheus שנוצר על ידי העתקה של groups מהמשאב המותאם אישית הקודם Rules
ייראה כך:
groups:
- name: example
interval: 30s
rules:
- alert: FewerThanTenInstancesUp
expr: sum(up) < 10
העברה של כמה משאבים מותאמים אישית של כללים
אם רוצים להעביר כמה כללים, CustomRules או GlobalRules, מומלץ ליצור ולהעביר קובץ כללים נפרד לכל משאב. מידע נוסף מופיע במאמרי העזרה בנושא Prometheus.
ניהול של מסננים וביטויי צבירה
כללים ו-ClusterRules מסננים באופן אוטומטי את ביטויי ההתראה של Prometheus על סמך תוויות מסוימות. כדי לשמור על ההתנהגות הזו בשאילתה של מדיניות התראות שהועברה, צריך לכלול את התוויות האלה באופן מפורש במסנן או בביטוי צבירה בקובץ הכללים של Prometheus לפני העברת הקובץ.
לדוגמה, הכלי להערכת כללים מנוהלים בשירות המנוהל ל-Prometheus מבצע את הביטוי sum(up) < 10 באופן הבא:
sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10
עם זאת, אם מדיניות ההתראות כוללת את שאילתת PromQL sum(up) < 10, Cloud Monitoring מריץ את השאילתה רק כ-sum(up) < 10. השאילתה הזו מוחלת על כל Google Cloud פרויקט, אשכול ומרחב שמות בהיקף המדדים. כדי למנוע את ההתנהגות הזו, מומלץ לציין את התוויות בשאילתה כדי לוודא ש-Cloud Monitoring יבצע את השאילתה כמו שרציתם. לדוגמה, כשיוצרים את קובץ הכללים ממקור המידע המותאם אישית Rules, אפשר לשנות את sum(up) < 10 לביטוי הבא:
sum (up) by (project_id, cluster, namespace) < 10
הביטוי הקודם יוצר סדרת זמן נפרדת לכלGoogle Cloud פרויקט, אשכול ומרחב שמות, ואז משווה כל סדרת זמן לסף ההתראה של <10.
בטבלה הבאה מוצג סדר ההערכה של מסנני ביטויים של התראות עבור כללים וכללי אשכולות:
| סוג המשאב של הכלל | סינון תוויות |
|---|---|
| כלל |
|
| ClusterRule |
|
מידע נוסף על התנהגות הסינון בביטויי Prometheus זמין במאמר Instant vector selectors.