Prometheus ve Alertmanager Yapılandırması

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'un Temel Özellikleri

RHEL’e Docker Ortamını Hazırlama


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 Dosyasını Hazırlama

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 Yapılandırması

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 Yapılandırması

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"
            

Alarm Kuralı Tanımlama

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."
            

Servisleri Başlatma


docker-compose up -d

docker ps
            

Prometheus arayüzüne şu adresten ulaşabilirsiniz: