Zabbix’te Scheduled Report ile Otomatik Raporlama
Sabah 09:00’da yöneticinizin masasında, geçen haftanın sunucu performans rakamlarını içeren güzel bir PDF’in hazır olmasını istiyorsunuz. Bunu her Pazartesi sabahı elle hazırlamak yerine otomatik olarak gönderilmesini sağlamak… İşte Zabbix’in Scheduled Report özelliği tam da bu iş için var. Bu yazıda bu özelliği A’dan Z’ye anlatacağım, hem kurulum hem de gerçek dünya senaryolarıyla.
Scheduled Report Nedir ve Neden Kullanmalısınız?
Zabbix 5.4 ile hayatımıza giren Scheduled Report özelliği, temel olarak Zabbix dashboard’larını PDF formatında belirli aralıklarla otomatik olarak e-posta ile gönderiyor. Kulak ardı edilen bir özellik gibi görünebilir ama işin içine girince ne kadar işlevsel olduğunu anlıyorsunuz.
Düşünün: Bir fintech şirketinde 47 sunucu yönetiyorsunuz. Her hafta CTO’ya veritabanı sunucularının performans özetini, her ay CFO’ya kapasite planlama raporunu göndermek zorundasınız. Zabbix’in bu özelliği olmadan ne yapacaksınız? Her seferinde dashboard’a girip ekran görüntüsü mü alacaksınız? Ya da Grafana’ya mı geçeceksiniz? Hayır, Zabbix zaten elinizin altında ve bu özellik mevcut.
Scheduled Report’un bize sağladıkları:
- Dashboard’ları otomatik PDF’e dönüştürme
- Haftalık, günlük, aylık gönderim seçenekleri
- Birden fazla alıcıya gönderim
- Farklı kullanıcı rolleri için farklı raporlar
- Zaman dilimine göre raporlama
Ön Gereksinimler
Scheduled Report özelliği birkaç bileşene ihtiyaç duyuyor. Bunları atlamak en çok yapılan hata. Özellikle Zabbix web service bileşeni kurulmadan bu özellik çalışmıyor, bu noktayı atlayan pek çok kişi saatlerce neden çalışmadığını anlamaya çalışıyor.
Gerekli bileşenler:
- Zabbix Server 5.4 veya üzeri
- Zabbix Web Service (zabbix-web-service paketi)
- Google Chrome veya Chromium (headless mod için)
- Zabbix Frontend’in düzgün yapılandırılmış FQDN’i
Zabbix web service, arka planda headless Chrome kullanarak dashboard’ı gerçek bir tarayıcıda açıyor ve PDF’e dönüştürüyor. Bu yüzden Chrome/Chromium kurulumu zorunlu.
Kurulum Adımları
Zabbix Web Service Kurulumu
Önce zabbix-web-service paketini kuralım. CentOS/RHEL için:
dnf install zabbix-web-service
Ubuntu/Debian için:
apt install zabbix-web-service
Şimdi Google Chrome’u kuralım. Bu adım çoğu zaman gözden kaçıyor:
# CentOS/RHEL için
cat > /etc/yum.repos.d/google-chrome.repo << 'EOF'
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
EOF
dnf install google-chrome-stable
# Ubuntu/Debian için
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install ./google-chrome-stable_current_amd64.deb
Web Service Yapılandırması
Zabbix web service konfigürasyon dosyasını düzenleyelim:
vim /etc/zabbix/zabbix_web_service.conf
Dikkat etmeniz gereken parametreler:
- ListenPort: Web service’in dinleyeceği port, varsayılan 10053
- AllowedIP: Zabbix server’ın IP adresi, güvenlik açısından kritik
- LogFile: Log dosyasının konumu
- LogFileSize: Log dosyası maksimum boyutu MB cinsinden
Temel bir yapılandırma örneği:
LogType=file
LogFile=/var/log/zabbix/zabbix_web_service.log
LogFileSize=10
AllowedIP=127.0.0.1,192.168.1.100
ListenPort=10053
WebDriverURL=http://localhost:4444
Buradaki WebDriverURL alanı Selenium WebDriver için, ama Chrome headless kullanıyorsanız bu satırı yorum satırına almanız gerekebilir, Zabbix versiyonuna göre değişiyor.
Zabbix Server Tarafında Yapılandırma
Zabbix server konfigürasyonuna web service URL’ini eklememiz gerekiyor:
vim /etc/zabbix/zabbix_server.conf
### Web service URL eklenmeli
WebServiceURL=http://localhost:10053/report
Servisleri başlatıp enable edelim:
systemctl enable --now zabbix-web-service
systemctl restart zabbix-server
Servisin düzgün çalışıp çalışmadığını kontrol edelim:
systemctl status zabbix-web-service
journalctl -u zabbix-web-service -f
E-posta Bildirim Ayarları
Scheduled Report’ların gönderilmesi için Zabbix’te bir media type tanımlanmış ve kullanıcılara atanmış olması gerekiyor. Zabbix arayüzünden Administration > Media types kısmına gidin.
SMTP ayarları için örnek bir konfigürasyon şöyle görünmeli:
- SMTP server: mail.sirketiniz.com
- SMTP server port: 587
- SMTP helo: sirketiniz.com
- SMTP email: [email protected]
- Connection security: STARTTLS
- Authentication: Username and password
Dashboard Hazırlama
Scheduled Report bir dashboard’a bağlıdır. Rapor olarak göndereceğiniz dashboard’ı önceden hazırlamanız gerekiyor. Dashboard tasarımı raporun kalitesini doğrudan etkiliyor.
İyi bir rapor dashboard’u için öneriler:
- Tek sayfa veya maksimum 2-3 sayfa olacak şekilde tasarlayın
- Widget başlıklarını açıklayıcı yazın, “Graph 1” değil “Web Sunucusu CPU Kullanımı” gibi
- Renk seçimlerine dikkat edin, PDF’te bazı renkler iyi görünmeyebilir
- Grafik aralıklarını rapora göre ayarlayın (haftalık rapor için 7 günlük veri)
- Metin widget’larıyla rapor hakkında kısa açıklamalar ekleyin
Dashboard oluştururken özellikle “Problems” widget’ını eklemenizi öneririm. Yöneticiler genellikle “Bu hafta kaç alarm çıktı?” sorusunu sorarlar, bu widget buna cevap veriyor.
Scheduled Report Oluşturma
Artık asıl konuya geldik. Zabbix arayüzünde Reports > Scheduled reports kısmına gidin ve “Create report” butonuna tıklayın.
Karşınıza çıkacak form oldukça sade ama her alanın önemi var:
Temel Ayarlar:
- Name: Raporun adı, anlamlı bir isim koyun (örn: “Haftalık Sunucu Performans Raporu”)
- Dashboard: Hangi dashboard’ın raporlanacağı
- Period: Raporun kapsayacağı zaman dilimi (Previous day, Previous week, Previous month, Custom)
- Cycle: Gönderim sıklığı (Daily, Weekly, Monthly, Once)
- Start time: Hangi saatte gönderilsin
- Repeat: Kaç kez tekrar edilsin, boş bırakırsanız süresiz devam eder
Aboneler (Subscriptions):
Bu kısımda kime gönderileceğini belirliyorsunuz. İki seçenek var:
- User: Zabbix’te kayıtlı bir kullanıcı
- User group: Bir kullanıcı grubu
Her aboneye farklı bir “Generate report by” seçeneği atayabilirsiniz. Bu özellik son derece güçlü; raporun sanki o kullanıcı görmüş gibi üretilmesini sağlıyor. Yani bir kullanıcının sadece belirli host grubunu görme izni varsa, raporu da o filtreyle üretiliyor.
Subject ve Message alanları e-postanın konu satırı ve gövdesi için kullanılıyor. Makrolar kullanabilirsiniz:
# Subject örneği
Zabbix Haftalık Rapor - {DATE}
# Message örneği
Merhaba,
Bu hafta ({DATE}) için sunucu performans raporu ektedir.
Detaylar için: {URL}
Zabbix Monitoring Sistemi
Gerçek Dünya Senaryoları
Senaryo 1: Haftalık Yönetici Özet Raporu
Bir e-ticaret şirketinde çalıştığınızı düşünün. Her Pazartesi sabahı saat 08:30’da CTO’ya ve altyapı ekibine geçen haftanın performans özetini göndermek istiyorsunuz.
Dashboard yapısı şöyle olabilir:
- Toplam sistem sayısı ve durum özeti (Problems widget)
- En yüksek CPU kullanan 10 sunucu
- Haftalık network trafiği toplamı
- Disk doluluk trendi (kritik olanlar)
- Servis erişilebilirlik özeti (web senaryoları varsa)
Scheduled report ayarları:
- Cycle: Weekly
- Day of week: Monday
- Start time: 08:30
- Period: Previous week
Bu raporu hazırlarken öğrendiğim bir şey: CTO’lar sayı ve trend görmek istiyor, teknik detay değil. Dashboard’ınızı buna göre tasarlayın.
Senaryo 2: Günlük Operasyon Raporu
Büyük bir banka altyapısında çalışıyorsanız, gece shift’inden gündüz shift’ine geçişte operasyon ekibinin “dün gece ne oldu?” sorusuna cevap vermesi gerekiyor. Sabah 07:00’da gönderilecek bir gece raporu hayat kurtarıcı oluyor.
Dashboard için:
- Gece boyunca oluşan alarmlar (Problems widget, 24 saat)
- Batch job’ların tamamlanma durumu (eğer izleniyorsa)
- Kritik servislerin availability yüzdesi
- Yedekleme başarı/başarısızlık durumu
Senaryo 3: Aylık Kapasite Planlama Raporu
Her ayın 1’inde finans ekibine veya proje yöneticisine aylık kapasite raporu göndermek için:
- Cycle: Monthly
- Day: 1
- Start time: 09:00
- Period: Previous month
Bu raporda dikkat edilmesi gereken disk büyüme trendleri. Zabbix’te disk kullanımı grafikleri 30 günlük trendleri güzel gösteriyor ve “Bu sunucuya 3 ay içinde ek disk lazım” kararını kolaylaştırıyor.
Sorun Giderme
Scheduled Report’ta sorun yaşıyorsanız önce şu kontrolleri yapın:
# Web service log'unu kontrol et
tail -f /var/log/zabbix/zabbix_web_service.log
# Zabbix server log'unda web service ile ilgili mesajları ara
grep -i "web service|report|pdf" /var/log/zabbix/zabbix_server.log | tail -50
# Chrome'un çalışıp çalışmadığını test et
google-chrome --headless --disable-gpu --print-to-pdf=/tmp/test.pdf https://www.google.com
ls -la /tmp/test.pdf
Sık karşılaşılan sorunlar ve çözümleri:
- “Web service is not configured”: zabbix_server.conf’a WebServiceURL eklenmedi, servisi restart etmeyi unutmayın
- “Cannot connect to Zabbix web service”: AllowedIP ayarı yanlış veya firewall engelliyor
- Chrome sandbox hatası: Root olarak çalışıyorsanız Chrome sandbox sorun çıkarıyor, web service’i ayrı kullanıcıyla çalıştırın
SELinux aktifse ek izinler gerekebilir:
# SELinux loglarını kontrol et
ausearch -m avc -ts recent | grep zabbix
# Gerekirse policy oluştur
ausearch -m avc -ts recent | audit2allow -M zabbix_web_service
semodule -i zabbix_web_service.pp
Chrome için sandbox problemi yaşıyorsanız web service konfigürasyonuna ek parametre eklenebilir:
# zabbix_web_service.conf içine
ChromeDriverPath=/usr/bin/google-chrome
Firewall kontrolü:
# Web service portunun açık olduğunu kontrol et
ss -tlnp | grep 10053
# Zabbix server'dan web service'e bağlantıyı test et
curl -v http://localhost:10053/report
PDF Kalitesini Artırma İpuçları
Otomatik üretilen PDF’ler bazen biraz kötü görünebiliyor. Birkaç ince ayarla bunu düzeltebilirsiniz.
Dashboard tasarım önerileri:
- Widget boyutlarını 12 kolonluk grid’e göre dengeli dağıtın
- Grafiklerde “Show legend” seçeneğini açın ama çok fazla serie eklemeyin
- “Text” widget’larını bölüm başlıkları için kullanın
- Dashboard genişliğini fazla tutun, PDF’te sığdırma sorunu azalıyor
Raporlama periyoduna dikkat:
Haftalık raporda “Previous week” seçerseniz Pazartesi-Pazar arası veri geliyor, bu standart bir seçim. Ama bazı kurumlarda hafta Pazar başlıyor, buna dikkat edin. Custom period seçerek daha fazla kontrol elde edebilirsiniz.
Zabbix API ile Scheduled Report Yönetimi
Birden fazla rapor oluşturmanız veya mevcut raporları scriptlerle yönetmeniz gerekiyorsa Zabbix API devreye giriyor. Zabbix 6.0 itibariyle report API endpoint’i gayet stabil:
# API token al
curl -s -X POST
-H "Content-Type: application/json"
-d '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin",
"password": "zabbix"
},
"id": 1
}'
http://zabbix.sirketiniz.com/zabbix/api_jsonrpc.php
Mevcut raporları listelemek için:
curl -s -X POST
-H "Content-Type: application/json"
-d '{
"jsonrpc": "2.0",
"method": "report.get",
"params": {
"output": "extend"
},
"auth": "BURAYA_TOKEN",
"id": 2
}'
http://zabbix.sirketiniz.com/zabbix/api_jsonrpc.php | python3 -m json.tool
API üzerinden rapor oluşturmak birden fazla ortamda aynı rapor konfigürasyonunu tekrar oluşturmanız gerektiğinde çok işinize yarıyor. Örneğin staging ortamından production’a geçiş sırasında tüm rapor konfigürasyonlarını script ile taşıyabilirsiniz.
Güvenlik Konuları
Scheduled Report özelliği kullanırken birkaç güvenlik noktasına dikkat etmek gerekiyor.
“Generate report by” yetkisi:
Bu ayar çok kritik. Bir kullanıcı kendi yetkisinin üzerinde veri içeren bir dashboard’a rapor abonesi yapılırsa, rapor yine de sadece o kullanıcının görebileceği veriyi gösteriyor. Zabbix bu konuda oldukça düzgün davranıyor. Ama bunu test etmeden varsaymayın, konfigürasyon tamamlandıktan sonra mutlaka düşük yetkili bir test kullanıcısıyla kontrol edin.
Web service ağ erişimi:
Web service dışarıya açık olmamalı. AllowedIP parametresi sadece Zabbix server’ın IP’sini içermeli. Firewall’da da bu portu gereksiz yere açmayın:
# Sadece localhost erişimine izin ver
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="127.0.0.1" port port="10053" protocol="tcp" accept'
firewall-cmd --reload
# Ya da iptables kullanıyorsanız
iptables -A INPUT -p tcp --dport 10053 ! -s 127.0.0.1 -j DROP
Sonuç
Zabbix Scheduled Report özelliği, kurulumu biraz zahmetli görünse de bir kez doğru kurulunca harika çalışıyor. Asıl değer kurulumdan sonra ortaya çıkıyor: Artık her Pazartesi sabahı manuel rapor hazırlamıyorsunuz, yöneticinizin mail kutusunda rapor hazır oluyor, siz de başka işlere zaman ayırabiliyorsunuz.
Özetle dikkat etmeniz gereken kritik noktalar:
- Zabbix web service ve Chrome kurulumunu es geçmeyin
- zabbix_server.conf’a WebServiceURL eklemeyi unutmayın
- AllowedIP güvenlik ayarını doğru yapın
- Dashboard tasarımını rapor için özel yapın, günlük izleme dashboard’ını olduğu gibi kullanmayın
- “Generate report by” yetkisini dikkatlice belirleyin
- İlk kurulumdan sonra test kullanıcısıyla bir deneme raporu üretin
Kurumsal ortamlarda bu özelliği tam anlamıyla oturtmak bazen birkaç gün sürebilir, özellikle SELinux ve network kısıtlamaları olan ortamlarda. Sabırlı olun, log’ları iyi takip edin, genellikle sorun küçük bir yapılandırma detayından kaynaklanıyor.
