Prometheus ekosistemi son yıllarda çok konuşuluyor ama kurumsal ortamlarda hâlâ en yaygın izleme yazılımı Zabbix'tir ve bunun sağlam gerekçeleri var: tek bir arayüzden yüzlerce host'u yönetirsin, ajan kurulamayan cihazları SNMP ile izlersin, uyarı eskalasyonunu ekip hiyerarşisine göre kurgularsın ve envanter yönetimi kutudan çıkar. Zabbix kurulumu, Prometheus'a kıyasla daha çok adım içerir çünkü arkasında gerçek bir ilişkisel veritabanı vardır — ama bir kez oturduğunda yönetimi tamamen arayüz üzerinden yapılır.
Bu rehberde Zabbix'in dört bileşenli mimarisini, veritabanı ve frontend dahil sıfırdan kurulumu, Zabbix Agent 2'nin kurulumunu ve aktif ile pasif kontrol arasındaki kritik farkı, ilk host'u ekleyip şablon bağlamayı, item-trigger-action zincirinin nasıl kurulduğunu, bildirim ve eskalasyon ayarlarını, son olarak da veritabanını şişirmemek için housekeeping yapılandırmasını anlatacağım.
Zabbix Mimarisi: Dört Bileşen#
Zabbix'i ilk kez kuranların takıldığı yer, tek bir program kurmuyor olmalarıdır. Dört ayrı parça birlikte çalışır ve her birinin ayrı bir görevi vardır:
| Bileşen | Görevi | Nerede çalışır |
|---|---|---|
| Zabbix Server | Verileri toplar, trigger'ları değerlendirir, aksiyonları tetikler | Merkezî sunucu |
| Veritabanı | Yapılandırma ve tüm geçmiş veri | MySQL/MariaDB ya da PostgreSQL |
| Frontend | PHP tabanlı web arayüzü | Aynı sunucu ya da ayrı web sunucusu |
| Zabbix Agent | İzlenen makinede metrik toplar | Her host'ta |
Bunlara ek olarak Zabbix Proxy vardır: uzak ağdaki host'ları yerel olarak toplar, tamponlar ve merkeze tek bağlantıyla iletir. Farklı veri merkezlerinde sunucun varsa neredeyse zorunludur.
Zabbix'in Prometheus'tan en önemli farkı push/pull esnekliğidir. Prometheus yalnızca çeker; Zabbix hem çekebilir (pasif kontrol) hem de ajan gönderebilir (aktif kontrol). NAT ya da firewall arkasındaki makinelerde aktif kontrol seni kurtarır: merkez host'a ulaşamaz ama host merkeze ulaşır. Çekme modeli için Prometheus kurulumu yazısına bakabilirsin.
Kurulum: Depo, Veritabanı ve Frontend#
Zabbix'i dağıtımın kendi deposundan değil, projenin resmî deposundan kurmanı öneririm; dağıtım depoları genellikle eski sürüm taşır ve sürüm atlamak sonradan zahmetli olur.
# Debian/Ubuntu için resmi depo (sürüm numarasını güncel LTS ile değiştir)
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest+ubuntu24.04_all.deb
sudo apt update
# Sunucu, frontend, agent
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
AlmaLinux ya da Rocky kullanıyorsan aynı akış dnf ile işler; paket yönetimi tarafında tazelenmek istersen DNF paket yönetimi yazısına göz atabilirsin.
Sırada veritabanı var. Zabbix'in şeması büyüktür ve ilk yükleme birkaç dakika sürer:
-- Veritabanı ve kullanıcı
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'guclu-bir-parola';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
-- Zabbix saklı yordam oluşturur, bu ayar gerekli
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
# Şemayı yükle (parola sorar, birkaç dakika sürer)
sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
# Yükleme bitince geçici ayarı geri al
mysql -uroot -p -e "SET GLOBAL log_bin_trust_function_creators = 0;"
Ardından sunucu yapılandırmasında veritabanı parolasını tanıtırsın:
# /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=guclu-bir-parola
# Toplayıcı süreç sayıları — host sayısı arttıkça yükseltilir
StartPollers=10
StartPreprocessors=5
# Değer önbelleği; "cache is fully used" hatası görürsen büyüt
CacheSize=64M
HistoryCacheSize=32M
Timeout=10
Servisleri başlat ve durumu doğrula:
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpm
# Sunucu gerçekten ayağa kalktı mı
sudo tail -f /var/log/zabbix/zabbix_server.log
# "Zabbix Server started" satırını görmelisin
Arayüze http://SUNUCU_IP/zabbix adresinden ulaşırsın; kurulum sihirbazı veritabanı bilgilerini ister ve varsayılan giriş Admin kullanıcısıdır. İlk iş bu parolayı değiştirmek olmalı — varsayılan kimlik bilgileriyle açık bırakılmış Zabbix arayüzleri, internette taranarak bulunan klasik hedeflerdendir.
Zabbix Agent 2 ve Aktif/Pasif Kontrol Farkı#
İzlenecek her sunucuya ajan kurarsın. Agent 2, Go ile yazılmış güncel sürümdür ve eklenti mimarisi sayesinde MySQL, Redis, Docker gibi servisleri ek yazılım olmadan izleyebilir.
# /etc/zabbix/zabbix_agent2.conf
# Pasif kontroller: sunucu ajana bağlanır (bu IP'den gelen istekleri kabul et)
Server=10.0.0.5
# Aktif kontroller: ajan sunucuya bağlanır
ServerActive=10.0.0.5
# Bu ajanın kimliği — arayüzdeki host adıyla BİREBİR aynı olmalı
Hostname=web-01
# Kullanıcı tanımlı parametreler için
Include=/etc/zabbix/zabbix_agent2.d/*.conf
Aradaki farkı iyi anlamak, sonradan çıkacak birçok sorunu baştan önler:
| Özellik | Pasif kontrol | Aktif kontrol |
|---|---|---|
| Bağlantı yönü | Sunucu → Ajan (port 10050) | Ajan → Sunucu (port 10051) |
| NAT/firewall arkasında | Çalışmaz | Çalışır |
| Sunucu yükü | Daha yüksek | Daha düşük |
| Host adı eşleşmesi | Gerekmez | Zorunlu |
| Ajan geçici erişilemezse | Veri kaybı | Ajan tamponlar |
Aktif kontrollerde Hostname değerinin arayüzdeki host adıyla harfi harfine eşleşmesi zorunludur. Eşleşmezse sunucu ajanı tanımaz, ajan loglarında host [web-01] not found yazar ve arayüzde hiçbir veri görünmez — ilk kurulumda en sık karşılaşılan sorun budur. Büyük filolarda aktif kontrolleri tercih etmek hem sunucu yükünü düşürür hem de firewall yönetimini basitleştirir.
# Ajanın sunucuya ulaşıp ulaşmadığını sunucudan test et
zabbix_get -s 10.0.0.11 -k agent.ping
# Beklenen çıktı: 1
# Ajan tarafındaki hataları oku
sudo tail -30 /var/log/zabbix/zabbix_agent2.log
İlk Host'u Eklemek ve Şablon Bağlamak#
Zabbix'in gücü şablonlardadır. Bir host'a tek tek metrik tanımlamak yerine hazır bir şablon bağlarsın; şablon içindeki tüm item, trigger, grafik ve keşif kuralları o host'a otomatik uygulanır. Bir Linux sunucusu için standart akış şudur:
- Data collection → Hosts → Create host yolunu izle.
- Host name alanına ajanın
Hostnamedeğeriyle birebir aynı ismi yaz (web-01). - Templates alanına
Linux by Zabbix agentşablonunu ekle (aktif kontroller içinLinux by Zabbix agent activesürümünü seç). - Host groups alanına anlamlı bir grup ver (
Uretim/Web), gruplar sonradan izin ve aksiyon filtrelemede kullanılır. - Interfaces bölümünde Agent arayüzü ekle: IP ve port 10050.
- Kaydet ve birkaç dakika bekle; Monitoring → Latest data ekranında değerlerin akmaya başlaması gerekir.
Şablon seçiminde küçük ama önemli bir ayrıntı var: Linux by Zabbix agent şablonu pasif item'lar içerir, Linux by Zabbix agent active ise aktif olanları. Ajanı aktif moda ayarlayıp pasif şablon bağlarsan hiçbir veri gelmez ve saatlerce ağ sorunu ararsın. İkisi birden bağlanmaz; ortamına uygun olan tek şablonu seç.
Yaygın kullanılan hazır şablonlardan bazıları:
| Şablon | Ne izler |
|---|---|
Linux by Zabbix agent | CPU, bellek, disk, ağ, sistemd birimleri |
Nginx by HTTP | Bağlantı sayısı, istek hızı, durum uç noktası |
MySQL by Zabbix agent 2 | Sorgu hızı, bağlantılar, InnoDB tampon havuzu |
Docker by Zabbix agent 2 | Konteyner sayısı, imaj, kaynak kullanımı |
Generic by SNMP | Ajan kurulamayan switch, router, yazıcı |
Website certificate by Zabbix agent 2 | TLS sertifikası son kullanma tarihi |
Son satır özellikle işe yarar: sertifika bitiş tarihini izlemek, en ucuz ve en çok işe yarayan uyarılardan biridir. Sertifika yönetimini merak ediyorsan SSL sertifikası sayfamız süreçleri özetliyor.
Item, Trigger ve Action Zinciri#
Zabbix'te uyarı üç aşamalı bir zincirdir ve her aşamanın adını bilmek, arayüzde kaybolmamanı sağlar. Item ölçümü toplar, Trigger bir koşulu değerlendirir, Action koşul sağlandığında ne yapılacağını belirler.
Trigger ifadeleri kendi söz dizimine sahiptir ve okunması alışkanlık ister:
# Kök disk yüzde 85 üstünde
last(/web-01/vfs.fs.size[/,pused]) > 85
# Son 5 dakikanın CPU ortalaması yüzde 90 üstünde
avg(/web-01/system.cpu.util,5m) > 90
# Ajan 3 dakikadır erişilemiyor
nodata(/web-01/agent.ping,3m) = 1
# Kullanılabilir bellek 200 MB altına düştü VE takas kullanımı artıyor
last(/web-01/vm.memory.size[available]) < 200M
and last(/web-01/system.swap.size[,pfree]) < 20
Trigger'lara severity atamayı ihmal etme; Zabbix altı seviye sunar (Not classified'dan Disaster'a) ve aksiyonları bu seviyelere göre filtreleyerek gece yalnızca kritik olanların bildirim göndermesini sağlarsın.
Dependency (bağımlılık) özelliği ise gürültüyü kesen en değerli araçtır: "Disk doluluk" trigger'ını "Ajan erişilemiyor" trigger'ına bağımlı yaparsan, sunucu tamamen düştüğünde yalnızca tek bir uyarı alırsın, on farklı metrik için on ayrı bildirim değil. Bir anahtar arızasında bu ayarın olup olmaması, üç bildirimle üç yüz bildirim arasındaki farktır.
Bildirim Kanalları ve Eskalasyon#
Bildirimler Alerts → Media types altında tanımlanır; e-posta, Telegram, Slack, webhook ve SMS için hazır tipler gelir. E-posta için SMTP bilgilerini girip test etmen yeterlidir. Bildirimler gitmiyorsa neredeyse her zaman üç sebepten biridir: SMTP portu/TLS modu uyumsuzluğu, kullanıcı profiline medya eklenmemiş olması ya da aksiyon koşullarının hiç eşleşmemesi. Port ve şifreleme modu uyumunu SMTP test aracı ile hızlıca doğrulayabilirsin.
Zabbix'in gerçekten öne çıktığı yer eskalasyondur. Bir aksiyonun operasyon adımlarına farklı gecikmeler ve farklı alıcılar tanımlarsın:
- Adım 1 (hemen): Nöbetçi sistem yöneticisine e-posta ve Telegram.
- Adım 2 (15 dakika sonra, sorun devam ediyorsa): Ekip liderine de gönder.
- Adım 3 (30 dakika sonra): Yöneticiye gönder ve otomatik bir kurtarma betiği çalıştır.
- Recovery operation: Sorun çözüldüğünde tüm alıcılara "normale döndü" bildirimi.
Bu yapı, uyarıların "kimse görmedi" diye kaybolmasını yapısal olarak engeller. Otomatik kurtarma adımında uzaktan komut da çalıştırabilirsin, ancak dikkatli kullan: yanlış kurulmuş bir otomatik eylem sorunu çözmek yerine döngüye sokabilir.
Performans ve Housekeeping#
Zabbix kurulumlarının en yaygın uzun vadeli sorunu veritabanının şişmesidir. Her item her toplama aralığında bir satır yazar; yüz host ve host başına yüz item'la günde milyonlarca satır birikir. İki mekanizma bunu yönetir: history (ham veri) ve trends (saatlik özet).
# Şablon/item düzeyinde tipik ayarlar
History storage period : 7d # ham veri 7 gün
Trend storage period : 365d # saatlik özet 1 yıl
Ham veriyi 90 gün tutmanın neredeyse hiçbir faydası yoktur; grafiklerde zaten trend verisi kullanılır. Administration → Housekeeping ekranından temizleme sıklığını ayarlarsın, ancak büyük kurulumlarda housekeeping'in kendisi veritabanını zorlar. Doğru çözüm bölümleme (partitioning) kullanıp Zabbix'in housekeeping'ini kapatmaktır — eski bölümü silmek milyonlarca satırı DELETE etmekten kat kat ucuzdur.
Performans darboğazlarını izlemek için Zabbix kendi kendini de izler; Zabbix server health şablonu bağlıysa şu değerlere göz at:
| Gösterge | Sağlıklı aralık | Aşılırsa |
|---|---|---|
| Zabbix busy poller % | %75 altı | StartPollers değerini artır |
| Value cache hit ratio | %95 üstü | CacheSize değerini artır |
| History write cache % | %50 altı | Veritabanı disk G/Ç darboğazı |
| Queue (bekleyen değer) | 100 altı | Toplayıcı ya da veritabanı yetersiz |
Kuyruk (Administration → Queue) sürekli büyüyorsa sunucu topladığı veriyi yazmaya yetişemiyor demektir; çözüm neredeyse her zaman daha hızlı disk ya da veritabanı ayarlarıdır, daha fazla CPU değil. Görselleştirme tarafını Grafana'ya taşımak isteyenler için Zabbix veri kaynağı eklentisi mevcuttur; pano kurulumunu Grafana dashboard oluşturma yazısındaki yaklaşımla birleştirebilirsin.
Sık Yapılan Hatalar ve Tuzaklar#
Host adı ile ajan Hostname değerinin uyuşmaması. Aktif kontrollerde veri hiç gelmez ve hata yalnızca ajan logunda görünür. İki değerin harfi harfine aynı olduğunu doğrula.
Yanlış şablon sürümünü bağlamak. Linux by Zabbix agent pasif, ... agent active aktif item'lar içerir. Ajan modunla eşleşmeyen şablon sessizce boş kalır.
Varsayılan Admin parolasını değiştirmemek. İnternete açık bir Zabbix arayüzü, varsayılan kimlik bilgileriyle taranarak bulunan hedeflerdendir. İlk girişte değiştir ve arayüzü mümkünse VPN arkasında tut.
History saklama süresini uzun tutmak. 90 günlük ham veri, veritabanını gereksiz yere şişirir ve housekeeping'i boğar. Ham veri için 7-14 gün, trend için 365 gün makul bir başlangıçtır.
Trigger bağımlılıklarını kurmamak. Bir sunucu düştüğünde onlarca bildirim alırsın ve gerçek kök neden bunların içinde kaybolur. Alt seviye trigger'ları "ajan erişilemiyor" trigger'ına bağımlı yap.
Her şeyi izlemeye çalışmak. Şablonlardaki tüm item'ları açık bırakmak veri hacmini birkaç katına çıkarır. Kullanmadığın item'ları devre dışı bırak; izleme, veri toplama yarışı değildir.
Sıkça Sorulan Sorular#
Zabbix ücretsiz mi#
Evet, Zabbix tamamen açık kaynaklıdır ve AGPLv3 lisansıyla dağıtılır; host, item ya da kullanıcı sayısına göre hiçbir lisans ücreti yoktur. Şirket, ticari destek, eğitim ve kurulum danışmanlığı satar ama yazılımın kendisi sınırsız kullanılabilir. Maliyetin tamamı, sunucu kaynakları ve harcadığın yönetim zamanıdır.
Zabbix mi Prometheus mu kullanmalıyım#
Ortamının şekline bağlı. Zabbix, ajan kurulabilen geleneksel sunucular, SNMP konuşan ağ cihazları, envanter yönetimi ve derin eskalasyon senaryolarında güçlüdür; her şey arayüzden yönetilir. Prometheus ise konteyner ve dinamik ortamlarda, servis keşfiyle sürekli değişen hedeflerde ve kodla yönetilen yapılandırmalarda öne çıkar. Karma bir altyapıda ikisinin bir arada kullanıldığını sıkça görürsün.
Kaç host'u tek Zabbix sunucusuyla izleyebilirim#
Doğru donanım ve veritabanı ayarlarıyla tek bir sunucu birkaç bin host'a kadar rahatlıkla çıkabilir. Sınırı belirleyen şey host sayısından çok saniyedeki yeni değer (NVPS) miktarıdır ve darboğaz neredeyse her zaman veritabanı disk performansıdır. SSD kullan, history saklama süresini kısa tut ve büyük kurulumlarda tablo bölümlemesine geç.
Ajan kuramadığım cihazları nasıl izlerim#
Üç yol var. SNMP en yaygınıdır; switch, router, yazıcı ve çoğu ağ cihazı SNMP konuşur ve Zabbix'in hazır SNMP şablonları vardır. İkinci yol basit kontrollerdir (simple checks): ping, TCP port kontrolü, HTTP yanıtı gibi ajansız ölçümler. Üçüncüsü IPMI ya da API tabanlı kontrollerdir; sunucu donanımı ve bulut servisleri için uygundur.
Zabbix verileri ne kadar disk kaplar#
Kabaca bir tahmin için saniyedeki değer sayısını (NVPS) baz al: 100 NVPS'lik bir kurulum, 7 günlük ham veri ve 1 yıllık trend saklamayla genellikle 20-50 GB aralığında yer tutar. Asıl büyümeyi ham veri saklama süresi belirler; onu ikiye katladığında disk kullanımı da yaklaşık ikiye katlanır. Trend verisi çok daha küçüktür ve uzun süre saklanması sorun olmaz.
Kurulumdan sonra hangi ayarları ilk gün yapmalıyım#
Beş şeyi ilk gün hallet: Admin parolasını değiştir, arayüzü TLS arkasına al ve mümkünse doğrudan internete açma, e-posta ya da mesajlaşma bildirim kanalını kurup test bildirimi gönder, history ve trend saklama sürelerini şablon düzeyinde makul değerlere çek, ve "ajan erişilemiyor" trigger'ını kurup diğer trigger'ları ona bağımlı yap. Bu beşi yapılmış bir Zabbix, ilk gerçek arızada işine yarar.
Kapanış#
Zabbix, kurulumu en uzun süren ama uzun vadede en az bakım isteyen izleme sistemlerinden biridir; şablon mantığı oturduktan sonra yeni sunucu eklemek bir dakikalık iştir. Aklında kalması gereken dört alışkanlık şunlar: host adı ile ajan Hostname değerini birebir aynı tut ve şablon sürümünü ajan moduna göre seç, history saklama süresini kısa tutup trend'e güven, trigger bağımlılıklarıyla bildirim selini kaynağında kes, ve arayüzü varsayılan parolayla ya da açık portla asla bırakma. Anlık ve saniyelik teşhis ihtiyacın da varsa Zabbix'in yanına Netdata koymak iyi bir tamamlayıcıdır.
Zabbix sunucusu, veritabanı yükü nedeniyle kendi kaynaklarına sahip bir makinede çalışmalıdır; VDS ve bulut sunucu paketlerimiz SSD depolamayla bu iş için uygun bir zemin sunar, büyük filolar için dedicated sunucu tarafına bakabilirsin. Kurulumu, şablon yapılandırmasını ve uyarı zincirini bize bırakmak isterseniz sunucu yönetimi hizmetimiz izleme altyapısının kurulumunu da kapsıyor.