Amazon Managed Service for Prometheus Alert Manager
परिचय
Amazon Managed Service for Prometheus (AMP) दो प्रकार के नियमों का समर्थन करता है - 'Recording rules' और 'Alerting rules', जिन्हें आपके मौजूदा Prometheus server से import किया जा सकता है और नियमित अंतराल पर मूल्यांकन किया जाता है।
Alerting rules ग्राहकों को PromQL और एक threshold के आधार पर अलर्ट शर्तें परिभाषित करने की अनुमति देते हैं। जब alerting rule का मान threshold से अधिक हो जाता है, तो Amazon Managed Service for Prometheus में Alert manager को एक नोटिफिकेशन भेजा जाता है जो standalone Prometheus में alert manager के समान कार्यक्षमता प्रदान करता है। एक अलर्ट Prometheus में एक alerting rule का परिणाम है जब वह सक्रिय होता है।
Alerting Rules फ़ाइल
Amazon Managed Service for Prometheus में एक Alerting rule YAML प्रारूप में एक rules फ़ाइल द्वारा परिभाषित किया जाता है, जो standalone Prometheus में rules फ़ाइल के समान प्रारूप का पालन करता है। ग्राहकों के पास Amazon Managed Service for Prometheus workspace में कई rules फ़ाइलें हो सकती हैं। एक workspace Prometheus मेट्रिक्स के भंडारण और querying के लिए समर्पित एक तार्किक स्थान है।
एक rules फ़ाइल में आमतौर पर निम्नलिखित फ़ील्ड होते हैं:
groups:
- name:
rules:
- alert:
expr:
for:
labels:
annotations:
Groups: नियमों का एक संग्रह जो नियमित अंतराल पर क्रमिक रूप से चलाए जाते हैं
Name: समूह का नाम
Rules: एक समूह में नियम
Alert: अलर्ट का नाम
Expr: अलर्ट ट्रिगर होने के लिए अभिव्यक्ति
For: firing स्थिति में अपडेट होने से पहले अलर्ट की अभिव्यक्ति द्वारा threshold पार करने की न्यूनतम अवधि
Labels: अलर्ट से जुड़े कोई भी अतिरिक्त labels
Annotations: संदर्भात्मक विवरण जैसे विवरण या लिंक
एक नमूना rule फ़ाइल नीचे जैसी दिखती है
groups:
- name: test
rules:
- record: metric:recording_rule
expr: avg(rate(container_cpu_usage_seconds_total[5m]))
- name: alert-test
rules:
- alert: metric:alerting_rule
expr: avg(rate(container_cpu_usage_seconds_total[5m])) > 0
for: 2m
Alert Manager कॉन्फ़िगरेशन फ़ाइल
Amazon Managed Service for Prometheus Alert Manager अलर्ट सेटअप करने के लिए (प्राप्तकर्ता सेवा के लिए) YAML प्रारूप में एक कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है जो standalone Prometheus में alert manager config फ़ाइल के समान संरचना में है। कॉन्फ़िगरेशन फ़ाइल में alert manager और templating के लिए दो प्रमुख अनुभाग होते हैं
-
template_files, जिसमें अलर्ट में annotations और labels के templates होते हैं जो सुविधा के लिए
$value,$labels,$externalLabels, और$externalURLvariables के रूप में expose किए जाते हैं।$labelsvariable एक अलर्ट instance के label key/value pairs को रखता है। कॉन्फ़िगर किए गए external labels को$externalLabelsvariable के माध्यम से एक्सेस किया जा सकता है।$valuevariable एक अलर्ट instance के evaluated मान को रखता है।.Value,.Labels,.ExternalLabels, और.ExternalURLक्रमशः अलर्ट मान, अलर्ट labels, globally कॉन्फ़िगर किए गए external labels, और external URL (जो--web.external-urlके साथ कॉन्फ़िगर किया गया है) को contain करते हैं। -
alertmanager_config, जिसमें alert manager कॉन्फ़िगरेशन होता है जो standalone Prometheus में alert manager config फ़ाइल के समान संरचना का उपयोग करता है।
template_files और alertmanager_config दोनों वाली एक नमूना alert manager कॉन्फ़िगरेशन फ़ाइल नीचे जैसी दिखती है,
template_files:
default_template: |
{{ define "sns.default.subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]{{ end }}
{{ define "__alertmanager" }}AlertManager{{ end }}
{{ define "__alertmanagerURL" }}{{ .ExternalURL }}/#/alerts?receiver={{ .Receiver | urlquery }}{{ end }}
alertmanager_config: |
global:
templates:
- 'default_template'
route:
receiver: default
receivers:
- name: 'default'
sns_configs:
- topic_arn: arn:aws:sns:us-east-2:accountid:My-Topic
sigv4:
region: us-east-2
attributes:
key: severity
value: SEV2
अलर्टिंग के प्रमुख पहलू
Amazon Managed Service for Prometheus Alert Manager कॉन्फ़िगरेशन फ़ाइल बनाते समय तीन महत्वपूर्ण पहलुओं से अवगत होना आवश्यक है।
- Grouping: यह समान अलर्ट को एक एक नोटिफिकेशन में एकत्र करने में मदद करता है, जो तब उपयोगी होता है जब विफलता या आउटेज का blast radius बड़ा होता है और कई सिस्टम प्रभावित होते हैं और कई अलर्ट एक साथ fire होते हैं। इसका उपयोग श्रेणियों में समूहित करने के लिए भी किया जा सकता है (उदा., node अलर्ट, pod अलर्ट)। alert manager कॉन्फ़िगरेशन फ़ाइल में route ब्लॉक का उपयोग इस grouping को कॉन्फ़िगर करने के लिए किया जा सकता है।
- Inhibition: यह कुछ नोटिफिकेशन को दबाने का एक तरीका है ताकि पहले से सक्रिय और fire हो चुके समान अलर्ट को स्पैम करने से बचा जा सके। inhibit_rules ब्लॉक का उपयोग inhibition rules लिखने के लिए किया जा सकता है।
- Silencing: अलर्ट को एक निर्दिष्ट अवधि के लिए mute किया जा सकता है, जैसे maintenance window या planned outage के दौरान। आने वाले अलर्ट को अलर्ट silence करने से पहले सभी equality या regular expression मिलान के लिए सत्यापित किया जाता है। PutAlertManagerSilences API का उपयोग silencing बनाने के लिए किया जा सकता है।