Giriş: Prometheus ve Alertmanager Nedir?
Prometheus, açık kaynaklı bir izleme ve alarm sistemi olup, özellikle bulut tabanlı uygulamalar için tasarlanmıştır. Alertmanager ise Prometheus ile entegre çalışan bir bildirim yöneticisidir.
Prometheus, açık kaynaklı bir izleme ve alarm sistemi olup, özellikle bulut tabanlı uygulamalar için tasarlanmıştır. Alertmanager ise Prometheus ile entegre çalışan bir bildirim yöneticisidir.
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo systemctl status docker
Docker-compose.yml dosyamıza prometheus, alertmanager, node-exporter için gerekli servis, port ve config file'larımızı yapmamız gerekmektedir.
version: '3.7'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- "--config.file=/etc/prometheus/prometheus.yml"
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
ports:
- "9093:9093"
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
ports:
- "9100:9100"
Prometheus'un mevcut alertmanager bağlanacağı port ve A kaydını bu kısımda girmemiz gerekiyor. Örnek olarak aşağıdaki rule file ismini ve hedeflerin ne olacağını görebilirsiniz.
global:
scrape_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
- "alertmanager:9093"
rule_files:
- "alert_rules.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "node-exporter"
static_configs:
- targets: ["node-exporter:9100"]
Alertmanager ile E-mail ile alert gönderebilmemiz için aşağıdaki gibi alıcı eklememiz gerekmektedir. NOT: Eğer gmail kullanıyorsak auth_password uygulama bazlı şifre oluşturmamız gerekmektedir.
route:
receiver: "default-receiver"
receivers:
- name: "default-receiver"
email_configs:
- to: "[email protected]"
from: "[email protected]"
smarthost: "smtp.emailserver.com:587"
auth_username: "kullanici"
auth_password: "sifre"
Buradaki amaç tanımlayacağımız alarmın alertmanager ile birlikte yml konfigürasyonunu sağlayarak, gerekli rule almasını sağlamaktır. Alertmanager sayfasına girdiğimizde mevcut alert'ler kısmından girmiş olduğumuz alert'i görebiliriz.
- alert: HighCpuUsage
expr: node_cpu_seconds_total{mode="idle"} < 20
for: 1m
labels:
severity: critical
annotations:
summary: "Yüksek CPU kullanımı algılandı."
description: "Node Exporter'dan alınan verilere göre CPU kullanımı kritik seviyede."
docker-compose up -d
docker ps
Prometheus arayüzüne şu adresten ulaşabilirsiniz: