โฐAlerting
Prometheus Alerting, Prometheus'ta tanฤฑmlanmฤฑล bir dizi kurala gรถre alarm oluลturmayฤฑ saฤlayan bir bileลendir.
Prometheus Alerting, metriklerin deฤerlerini sรผrekli olarak izler ve tanฤฑmlanan kurala uyan metrikler iรงin alarm รผretir. รrneฤin, bir kural, bir hizmetin yanฤฑt verme sรผresinin normalde 500 ms'den az olduฤunu belirleyebilir ve bu sรผrenin 500 ms'den yรผksek olduฤu durumlarda bir alarm รผretir.
Alarm yรถneticisi, tanฤฑmlanan alarm kurallarฤฑnฤฑ gรถzlemler ve alarm durumlarฤฑna gรถre eylemler gerรงekleลtirir. รrneฤin, bir hizmetin yanฤฑt sรผresi belirtilen eลiฤi aลarsa, alarm yรถneticisi bir bildirim gรถnderebilir veya bir dizi eylem gerรงekleลtirebilir.
รzetle,
Prometheus, belirli aralฤฑklarla birรงok farklฤฑ hizmetin รถlรงรผmlerini toplar ve bu รถlรงรผmleri zaman serileri olarak depolar. Bu รถlรงรผmler, sunucu kaynaklarฤฑnฤฑn kullanฤฑmฤฑ, aฤ trafiฤi, uygulama performansฤฑ vb. gibi birรงok farklฤฑ alanda olabilir. Prometheus Alerting, bu รถlรงรผmleri kullanarak tanฤฑmlanmฤฑล kural veya koลullara gรถre alarm oluลturur. รrneฤin, bir kural, bir sunucunun kullanฤฑlabilir belleฤinin %10'dan az olmamasฤฑ gerektiฤini belirleyebilir ve bu koลul karลฤฑlanmadฤฑฤฤฑnda bir alarm oluลturabilir.
Bu kural ve koลullar YAML formatฤฑnda yazฤฑlmaktadฤฑr.
Rule Oluลturmak;
รnceki bรถlรผmde oluลturduฤumuz rule dosyamฤฑzฤฑn ismini, " recording_and_alerting_rules_1.yml " ลeklinde gรผncelliyoruz. Ve iรงerisine aลaฤฤฑdaki satฤฑrlarฤฑ ekliyoruz.
YAML dosyasฤฑndaki "my_rules_1" adlฤฑ grup iรงerisinde, "NodeExporterDown" adlฤฑ bir alarm tanฤฑmlandฤฑk.
Bu alarm, "up{job="node_exporter"} == 0" PromQL ifadesine gรถre tetiklenecektir. Bu ifade, "node_exporter" adlฤฑ iลin รงalฤฑลฤฑp รงalฤฑลmadฤฑฤฤฑnฤฑ kontrol eder. "up" metriฤi, bir iลin รงalฤฑลฤฑp รงalฤฑลmadฤฑฤฤฑnฤฑ gรถsteren 1 veya 0 deฤerini iรงerir. "job" etiketi, รถlรงรผmleri hangi iลin saฤladฤฑฤฤฑnฤฑ belirtir.
Eฤer "node_exporter" adlฤฑ iล, 0 (รงalฤฑลmฤฑyor) deฤerini dรถndรผrรผrse, bu alarm tetiklenecektir. Alarm, bir bildirim veya baลka bir iลlemle yรถnetilebilir.
รrnek olmasฤฑ aรงฤฑsฤฑndan, bir sunucumuza baฤlanฤฑp node_exporter servisimizi durdurduk. Ardฤฑndan arayรผzรผ kontrol ettiฤimizde "firing" kฤฑsmฤฑnda down olan sunucumuzu gรถrebiliriz.
Ek olarak, "ALERTS" sorgusunu รงalฤฑลtฤฑrarak, down durumda olan exporter hakkฤฑnda bilgi alabiliriz.
For
"For" parametresi, bir alarmฤฑn ne kadar sรผre boyunca devam etmesi gerektiฤini belirler. Bu parametre, bir alarmฤฑn yanlฤฑล bir ลekilde tetiklenmesini engellemeye yardฤฑmcฤฑ olur.
รrneฤin, "NodeExporterDown" adlฤฑ bir alarm, yukarฤฑdaki รถrnekte olduฤu gibi, "up{job="node_exporter"} == 0" PromQL ifadesine gรถre tetiklenecektir. Ancak, "for: 1m" parametresi, alarmฤฑn en az 1 dakika boyunca devam etmesi gerektiฤini belirtir.
Bu, "node_exporter" adlฤฑ iลin geรงici bir kesintisi nedeniyle bir alarm tetiklenmesini รถnlemeye yardฤฑmcฤฑ olur. รrneฤin, bir sistem gรผncellemesi sฤฑrasฤฑnda "node_exporter" geรงici olarak durabilir ve bu durumda alarm tetiklenebilir. Ancak, "for" parametresi, bu kesintinin geรงici olduฤunu ve alarmฤฑn devam etmesi gerektiฤini belirtir.
Bu ลekilde, alarm yรถneticisi, alarmฤฑn yanlฤฑล bir ลekilde tetiklenmesini รถnleyebilir ve yalnฤฑzca gerรงek bir hizmet kesintisi durumunda bir bildirim gรถnderir.
"up{job="node_exporter"} == 0" koลulu saฤlandฤฑฤฤฑnda hemen bir alarm tetiklenmez. Bunun yerine, alarm durumu "pending" durumuna geรงer ve alarm koลulu 1 dakika boyunca saฤlandฤฑktan sonra yalnฤฑzca bir alarm tetiklenir.
"node_exporter" adlฤฑ iลin geรงici bir kesintisi olduฤunda, alarm durumu "pending" durumuna geรงer ve "for" parametresinde belirtilen sรผre boyunca bekler. Eฤer iลteki kesinti 1 dakikadan daha kฤฑsa sรผrerse, alarm tetiklenmez ve yanlฤฑล bir alarm gรถnderilmez.
Labels
"labels", bir alarm iรงin ek bilgi veya metaveri saฤlamak iรงin kullanฤฑlan anahtar-deฤer รงiftleridir. Bu etiketler, alarm yรถneticisi tarafฤฑndan kullanฤฑlabilen ve alarmฤฑ daha iyi yรถnetmeye yardฤฑmcฤฑ olan ek bilgiler saฤlarlar.
รrneฤin, yukarฤฑdaki Prometheus kurallarฤฑnda, "labels" parametresi kullanฤฑlarak iki farklฤฑ alarm iรงin etiketler tanฤฑmlanmฤฑลtฤฑr. "severity" adlฤฑ bir etiket, her iki alarmda da kullanฤฑlmฤฑลtฤฑr. Bu etiket, bir alarmฤฑn รถnceliฤini veya ciddiyetini belirtir.
"AppLatencyAbove5sec" adlฤฑ alarm iรงin, "severity: critical" etiketi tanฤฑmlanmฤฑลtฤฑr. Bu etiket, alarmฤฑn kritik bir durumu iลaret ettiฤini belirtir. Bu, alarm yรถneticisi tarafฤฑndan daha hฤฑzlฤฑ bir ลekilde iลlenmesi gereken bir durum olduฤunu gรถsterir.
Benzer ลekilde, "AppLatencyAbove2sec" adlฤฑ alarm iรงin, "severity: warning" etiketi tanฤฑmlanmฤฑลtฤฑr. Bu etiket, alarmฤฑn daha az ciddi bir durumu iลaret ettiฤini belirtir. Bu, alarm yรถneticisinin bu durumu daha dรผลรผk bir รถncelik seviyesinde ele alabileceฤini gรถsterir.
Bu ลekilde, "labels" parametresi, alarm yรถneticisi tarafฤฑndan alฤฑnacak aksiyonlarฤฑn รถnceliฤi veya ciddiyeti hakkฤฑnda ek bilgi saฤlar.
Alert Manager
Prometheus Alertmanager, Prometheus ile birlikte kullanฤฑlan aรงฤฑk kaynaklฤฑ bir uyarฤฑ yรถnetim sistemidir. Alertmanager, Prometheus'tan gelen alarm sinyallerini alฤฑr, gruplandฤฑrฤฑr, filtreler ve bunlara yanฤฑt olarak belirli eylemler gerรงekleลtirir.
Alertmanager, gelen uyarฤฑlarฤฑ e-posta, SMS, Slack, PagerDuty ve diฤer bildirim kanallarฤฑ aracฤฑlฤฑฤฤฑyla iletebilir. Ayrฤฑca, uyarฤฑlarฤฑn otomatik olarak tekrarlanmasฤฑnฤฑ veya silinmesini saฤlayabilir. Alertmanager, karmaลฤฑk alarm durumlarฤฑnฤฑ iลlemek iรงin รถzelleลtirilebilir ve geniลletilebilir bir yapฤฑya sahiptir.
Genel olarak, Prometheus Alertmanager, Prometheus'tan gelen alarm sinyallerini yรถnetmek, filtrelemek ve yanฤฑtlamak iรงin tasarlanmฤฑลtฤฑr.
Kurulum,
Kurulacak sunucu รผzerinde "prometheus" kullanฤฑcฤฑsฤฑ ve grubu mevcut deฤilse, oluลturmalฤฑsฤฑnฤฑz.
Yukarฤฑdaki komut ile "Alert Manager" servisini kuruyoruz. รzetle yukarฤฑdaki komut ลunlarฤฑ yapar;
/tmp dizinine geรงer: "cd /tmp"
Alertmanager'ฤฑn Linux AMD64 sรผrรผmรผnรผ indirir: "wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz"
ฤฐndirilen dosyayฤฑ aรงar: "tar xzf alertmanager-0.25.0.linux-amd64.tar.gz"
ฤฐndirilen dizine geรงer: "cd alertmanager-0.25.0.linux-amd64"
Alertmanager ve amtool dosyalarฤฑnฤฑ /usr/local/bin dizinine taลฤฑr: "mv -v alertmanager amtool /usr/local/bin/"
/etc/alertmanager dizinini oluลturur: "mkdir -v /etc/alertmanager"
alertmanager.yml dosyasฤฑnฤฑ /etc/alertmanager dizinine taลฤฑr: "mv -v alertmanager.yml /etc/alertmanager"
/etc/alertmanager/data dizinini oluลturur: "mkdir -v /etc/alertmanager/data"
/etc/alertmanager/ dizinini prometheus:prometheus kullanฤฑcฤฑsฤฑna ve gruba sahip olacak ลekilde deฤiลtirir: "chown -Rfv prometheus:prometheus /etc/alertmanager/"
Alert Manager systemd dosyasฤฑnฤฑ oluลturalฤฑm.
Bu systemd dosyasฤฑnฤฑ kaydettikten sonra, "systemctl daemon-reload
" komutunu kullanarak systemd'ye dosyayฤฑ yeniden yรผklemelisiniz. Daha sonra, "systemctl start alertmanager
" komutunu kullanarak Alertmanager hizmetini baลlatabilirsiniz. "systemctl stop alertmanager
" komutu ile de hizmeti durdurabilirsiniz.
Yukarฤฑdaki adฤฑmlarฤฑ uygulayarak, Alert Manager servisini kurup, รงalฤฑลtฤฑrdฤฑk.
Prometheus.yaml dosyamฤฑzda, yeni kurduฤumuz alert manager servisini tanฤฑmlayฤฑp servisi restart ediyoruz.
systemctl restart prometheus
komutu ile prometheus servisi restart ediyoruz.
Alert Manager kurulumu tamamlandฤฑ ve รงalฤฑลฤฑr vaziyette olduฤunu teyit ettik.
Sending email
global
bรถlรผmรผ: Bu bรถlรผm, Alertmanager iรงin kรผresel yapฤฑlandฤฑrma ayarlarฤฑnฤฑ iรงerir.smtp_require_tls
ayarฤฑ, SMTP sunucusuyla iletiลim sฤฑrasฤฑnda TLS gerektirilip gerektirilmeyeceฤini belirler. Bu รถrnekte,false
olarak ayarlandฤฑฤฤฑ iรงin TLS gerekli deฤildir.route
bรถlรผmรผ: Prometheus tarafฤฑndan gรถnderilen uyarฤฑlarฤฑn nasฤฑl yรถnlendirileceฤini belirler. Bu รถrnekte,admin
adlฤฑ bir alฤฑcฤฑnฤฑn belirtildiฤireceiver
รถzelliฤi tanฤฑmlanmฤฑลtฤฑr.receivers
bรถlรผmรผ: Bu bรถlรผm,admin
alฤฑcฤฑsฤฑnฤฑn ayrฤฑntฤฑlarฤฑnฤฑ iรงerir. Bu รถrnekte, e-posta gรถndermek iรงin kullanฤฑlacak SMTP sunucusunun ayrฤฑntฤฑlarฤฑ tanฤฑmlanmฤฑลtฤฑr.email_configs
รถzelliฤi, SMTP sunucusu iรงin gerekli yapฤฑlandฤฑrma ayarlarฤฑnฤฑ iรงerir.to
, e-postanฤฑn gรถnderileceฤi alฤฑcฤฑnฤฑn e-posta adresini belirtir.from
, gรถnderenin e-posta adresini belirtir.smarthost
, SMTP sunucusunun adฤฑnฤฑ ve baฤlantฤฑ noktasฤฑnฤฑ belirtir.auth_username
, SMTP sunucusuna kimlik doฤrulama yapmak iรงin kullanฤฑlan kullanฤฑcฤฑ adฤฑnฤฑ belirtir.auth_identity
, SMTP sunucusuna baฤlanmak iรงin kullanฤฑlan kimlik bilgisini belirtir.auth_password
, SMTP sunucusuna baฤlanmak iรงin kullanฤฑlan ลifreyi belirtir.
annotations
annotations
, Alertmanager'daki bir uyarฤฑya ek ayrฤฑntฤฑlar eklemek iรงin kullanฤฑlan bir รถzelliktir. Bu รถzellik, bir uyarฤฑ hakkฤฑnda daha ayrฤฑntฤฑlฤฑ bilgi saฤlamak ve alฤฑcฤฑnฤฑn uyarฤฑyฤฑ daha iyi anlamasฤฑna yardฤฑmcฤฑ olmak iรงin kullanฤฑlabilir.
Alertmanager, annotations
รถzelliฤinde belirtilen tรผm ayrฤฑntฤฑlarฤฑ, bir uyarฤฑnฤฑn gรถsterildiฤi arayรผzlerde veya uyarฤฑ e-postalarฤฑnda gรถrรผntรผleyebilir.
summary
: Bu รถzellik, uyarฤฑ hakkฤฑnda kฤฑsa bir รถzet saฤlar. Bu รถrnekte, รถzet, "Python uygulamasฤฑ gecikmesi 5 saniyenin รผzerinde" olarak belirtilmiลtir.description
: Bu รถzellik, uyarฤฑyฤฑ daha ayrฤฑntฤฑlฤฑ bir ลekilde aรงฤฑklar. Bu รถrnekte, aรงฤฑklama, belirli bir uygulama รถrneฤinin adฤฑnฤฑ ({{ $labels.instance }}
), iล adฤฑnฤฑn adฤฑnฤฑ ({{ $labels.job }}
) ve รถlรงรผmleme verilerinin deฤerini ({{ $value }}
) iรงerir. Aรงฤฑklama, "5 dakikadan daha uzun sรผre iรงin {{ $value }} saniye olan {{ $labels.job }} iลinin {{ $labels.instance }} รถrneฤinin uygulama gecikmesi" olarak belirtilmiลtir.app_link
: Bu รถzellik, uyarฤฑnฤฑn aรงฤฑklamasฤฑnda bahsedilen uygulamanฤฑn baฤlantฤฑsฤฑnฤฑ saฤlar. Bu รถrnekte, baฤlantฤฑhttp://10.90.0.144:8000/
olarak belirtilmiลtir.
Alarm 'a annotations
kullanarak, detaylฤฑ bilgiler ekledik ve bu ลekilde daha mantฤฑklฤฑ uyarฤฑlar gรถndermeye baลladฤฑ.
Last updated