Merhaba,
Bu yazıda Docker üzerinde Prometheus ve Alertmanager kurulumunu adım adım anlatacağım.
Prometheus Kurulumu
Prometheus kurulumunu Docker kullanarak aşağıdaki komut ile gerçekleştirebilirsiniz:
docker run -d --name prometheus -p 9090:9090 -v /opt/prometheus:/etc/prometheus prom/prometheus
Bu örnekte /opt/prometheus dizini oluşturularak container içerisine bağlanmıştır. İsterseniz Docker volume kullanarak da aynı işlemi gerçekleştirebilirsiniz.
Prometheus’un sorunsuz şekilde çalışabilmesi için /opt/prometheus dizini altında prometheus.yml dosyasını oluşturmanız gerekmektedir. İlk aşamada dosyanın boş olması yeterlidir:
touch /opt/prometheus/prometheus.yml
Alertmanager Kurulumu
Alertmanager kurulumu için öncelikle bir Docker volume oluşturalım:
docker volume create alertmanager
Ardından Alertmanager container’ını çalıştıralım:
docker run -d --name alertmanager -p 9093:9093 -v alertmanager:/etc/alertmanager quay.io/prometheus/alertmanager
Kurulum tamamlandıktan sonra aşağıdaki dizinde bulunan alertmanager.yml dosyasını düzenlememiz gerekmektedir:
/var/lib/docker/volumes/alertmanager/_data/alertmanager.yml
Bu dosyada uyarıların nereye gönderileceğini belirliyoruz. Aşağıda e-posta gönderimi için örnek bir yapılandırma bulunmaktadır:
global:
resolve_timeout: 1m
route:
group_by: ["mail_alert_group"]
receiver: email_router
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receivers:
- name: email_router
email_configs:
- to: "[email protected]"
from: "[email protected]"
smarthost: "mail.example.com:587"
auth_username: "[email protected]"
auth_identity: "[email protected]"
auth_password: "parola"
require_tls: false
- name: web.hook
webhook_configs:
- url: "http://127.0.0.1:5001/"
inhibit_rules:
- source_matchers: [severity="critical"]
target_matchers: [severity="warning"]
Prometheus Alertmanager Entegrasyonu
Prometheus üzerinde alert kurallarını eklemek için bir klasör oluşturalım:
mkdir /opt/prometheus/alerts
Daha sonra /opt/prometheus/prometheus.yml dosyasını düzenleyerek Alertmanager’ı ekleyelim:
global:
scrape_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager-ip:9093']
rule_files:
- 'alerts/*.yml'
Exporter Ekleme (Windows Exporter Örneği)
Prometheus ile veri toplayabilmek için bir exporter eklememiz gerekmektedir. Bu örnekte Windows Exporter kullanılacaktır.
prometheus.yml dosyasına aşağıdaki yapılandırmayı ekleyin:
scrape_configs:
- job_name: kas1
static_configs:
- targets: ['kas1.ramazan.local:9182']
relabel_configs:
- source_labels: [__address__]
target_label: instance
Burada targets alanına izlemek istediğiniz makinenin hostname veya IP adresini yazmalısınız.
Alert Kuralları Tanımlama
Alert kuralları için /opt/prometheus/alerts/kas1.yml dosyasını oluşturalım:
groups:
- name: Kas1UpAlert
rules:
- alert: Kas1JobMissing
expr: up{job="Kas1"} == 0
for: 0m
labels:
severity: warning
annotations:
summary: "Kas1 job missing (instance {{$labels.instance}})"
description: "A Kas1 job has disappeared\nVALUE = {{$value}}\nLABELS = {{$labels}}"
- alert: CpuUsage
expr: 100 - (avg by (instance) (irate(windows_cpu_time_total{mode="idle"}[2m])) * 100) > 80
for: 10m
labels:
severity: warning
annotations:
summary: "CPU Usage (instance {{$labels.instance}})"
description: "CPU usage is more than 80%\nVALUE = {{$value}}\nLABELS = {{$labels}}"
Sonuç
Bu adımları tamamladıktan sonra Prometheus üzerinden metrikleri izleyebilir ve tanımladığınız kurallara göre Alertmanager aracılığıyla bildirimler alabilirsiniz.
Docker ile Prometheus ve Alertmanager kurulumu, sistem izleme ve uyarı mekanizmaları oluşturmak için hızlı ve etkili bir yöntemdir.