Birkaç sunucuyu izlemek için basit bir kesinti kontrolü çoğu zaman yeterlidir; ama iş onlarca sunucuya, switch'lere, güç kaynaklarına, veritabanı kümelerine ve farklı lokasyonlardaki uygulamalara yayıldığında elle takip imkânsız hâle gelir. Bu ölçekte artık "site açılıyor mu" değil, "hangi diskin doluşu hızlanıyor", "hangi switch portu hata paketi üretiyor", "yedekleme işi dün gece gerçekten çalıştı mı" gibi soruların yanıtı gerekir. Zabbix, tam bu ihtiyaç için tasarlanmış, açık kaynaklı ve kendi altyapınızda barındırabileceğiniz kurumsal bir izleme (monitoring) platformudur.
Bu rehberde Zabbix'in ne olduğunu, sunucu-ajan mimarisinin nasıl çalıştığını, kurulumun temel adımlarını, host (izlenecek cihaz) ekleyip şablonlarla nasıl hızlı sonuç aldığınızı, tetikleyicilerle (trigger) sorunları nasıl otomatik yakaladığınızı, SNMP üzerinden switch ve router gibi ağ cihazlarını nasıl izlediğinizi ve son olarak bir sorun oluştuğunda e-posta ya da başka kanallarla bildirim göndermeyi adım adım ele alacağız. Amaç, aracı gereğinden fazla süslemeden; gerçekten kendi ortamınızda kurup çalıştırabileceğiniz, örnek odaklı ve pratik bir başlangıç noktası vermektir.
Zabbix nedir, ne işe yarar?#
Zabbix, sunuculardan, ağ cihazlarından, sanal makinelerden ve uygulamalardan sayısal veriler (CPU kullanımı, bellek, disk doluluğu, ağ trafiği, servis durumu, sıcaklık gibi) toplayan; bu verileri bir veritabanında saklayan; belirlediğiniz eşikler aşıldığında uyarı üreten ve tüm bunları tek bir web arayüzünde gösteren merkezî bir izleme sistemidir. 2001'de Letonya'da doğmuş, olgun ve son derece köklü bir projedir; bugün bankalardan telekom operatörlerine kadar büyük ölçekli kurumsal ortamlarda yaygın biçimde kullanılır. Tamamen açık kaynak ve ücretsizdir; lisans başına ödeme yoktur, yalnızca çalıştıracağınız sunucu kaynağını ayırırsınız.
Zabbix'i basit "ayakta mı" kontrol araçlarından ayıran şey, derinliği ve esnekliğidir. Yalnızca bir servisin çalışıp çalışmadığını değil, o servisin nasıl çalıştığını (kaç istek/saniye aldığını, yanıt gecikmesinin nasıl seyrettiğini, sıraya kaç iş biriktiğini) ölçebilirsiniz. Toplanan her veriye "item" (öğe), bu öğelere bakıp koşul değerlendiren mantığa "trigger" (tetikleyici), tetikleyici çalıştığında yapılan işe ise "action" (aksiyon) denir. Bu üçlü kurgu, "disk %90 dolduğunda beni ara, ama iş saatleri dışındaysa sadece e-posta at" gibi ince ayarlı senaryolar tanımlamanıza olanak tanır. Basit kesinti izleme için Uptime Kuma gibi hafif araçlar yeterken, çok sayıda ve çeşitli cihazı derinlemesine izlemek gerektiğinde Zabbix devreye girer.
Sunucu-ajan (server-agent) mimarisi#
Zabbix'i anlamanın anahtarı, mimarisini kavramaktır. Sistem üç temel parçadan oluşur. Birincisi Zabbix Server: verileri toplayan, tetikleyicileri değerlendiren ve uyarıları tetikleyen beyin. İkincisi veritabanı (MySQL/MariaDB, PostgreSQL veya TimescaleDB): tüm yapılandırmanın ve geçmiş ölçüm verisinin saklandığı yer. Üçüncüsü web arayüzü (PHP tabanlı frontend): yöneticinin her şeyi yönettiği ve grafikleri gördüğü panel. Küçük kurulumlarda bu üçü aynı sunucuda çalışır; büyük ortamlarda ise veritabanı ayrı bir makineye taşınır.
İzlenecek her Linux/Windows sunucusuna ise küçük bir program olan Zabbix Agent kurulur. Ajan, sunucunun içinde çalışır ve yerel metrikleri (CPU, RAM, disk, çalışan süreçler, log dosyaları) doğrudan işletim sisteminden okur. Burada iki çalışma modu vardır ve farkı bilmek önemlidir:
| Mod | Nasıl çalışır | Ne zaman tercih edilir |
|---|---|---|
| Passive (pasif) | Zabbix Server ajana bağlanıp veriyi ister (Server → Agent, port 10050) | Server, ajanlara ağ üzerinden erişebiliyorsa (klasik senaryo) |
| Active (aktif) | Ajan sunucuya kendisi bağlanıp veriyi gönderir (Agent → Server, port 10051) | Ajan NAT/güvenlik duvarı arkasındaysa, çok sayıda host varsa |
Aktif mod, özellikle ajanların farklı ağlarda ya da NAT arkasında olduğu durumlarda tek yönlü bağlantı gerektirdiği için hem daha güvenli hem de sunucu tarafında daha ölçeklenebilirdir. Ağ cihazları gibi ajan kurulamayan donanımlar içinse Zabbix, ajansız yöntemler (SNMP, IPMI, SSH, HTTP kontrolleri) sunar; bu sayede switch'ten yazıcıya, UPS'ten depolama ünitesine kadar neredeyse her şeyi tek bir sistemde toplayabilirsiniz. Ajan kurulan sunucular çoğunlukla VDS ya da fiziksel makineler olur; izlemenin kendisini de bu tür bir sunucuda barındırmak en yaygın yaklaşımdır.
Zabbix kurulumu (temel adımlar)#
Zabbix'i kurmanın en temiz yolu, resmî depoyu (repository) sisteme ekleyip paketleri oradan çekmektir. Aşağıdaki örnek Ubuntu 22.04 üzerinde, veritabanı olarak MySQL/MariaDB ve web sunucusu olarak Nginx kullanarak Zabbix 6.x LTS sürümünü kurar. Önce resmî depo paketini indirip Zabbix'in server, frontend ve ajan bileşenlerini yükleyelim:
# Resmî Zabbix deposunu ekle (sürüm/işletim sistemi kombinasyonuna göre değişir)
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo apt update
# Server, frontend (nginx), ajan ve SQL şemasını yükle
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
Sonraki adım veritabanını hazırlamaktır. Zabbix'e ait bir veritabanı ve kullanıcı oluşturup, kurulumla gelen şemayı içeri aktarırsınız. Veritabanı yönetimi konusunda daha derine inmek isterseniz veritabanı rehberlerimizden faydalanabilirsiniz:
-- MySQL/MariaDB konsolunda çalıştır
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';
SET GLOBAL log_bin_trust_function_creators = 1;
# Şemayı ve başlangıç verisini içeri aktar (parola sorar)
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Son olarak /etc/zabbix/zabbix_server.conf dosyasında veritabanı parolasını (DBPassword=) tanımlar, servisleri başlatır ve sistem açılışında otomatik çalışacak şekilde etkinleştirirsiniz:
# Parolayı yapılandır, ardından servisleri başlat
sudo systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
sudo systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
Bu adımların ardından tarayıcıdan http://sunucu-ip/ adresine gidip web tabanlı kurulum sihirbazını tamamlarsınız. Varsayılan giriş bilgisi Admin / zabbix'tir ve ilk iş bu parolayı değiştirmektir. Kurulumun kalıcı ve güvenli olması için arayüzü HTTPS ile yayınlamanız (bir SSL sertifikası ile), izleme portlarını yalnızca gerekli ağlara açmanız ve düzenli yedek almanız önerilir. Bu tür yapılandırma ve sıkılaştırma işlerini kendiniz üstlenmek istemiyorsanız sunucu yönetimi hizmetimiz kurulumdan bakıma kadar bu yükü devralır.
Host ekleme ve şablonlarla hızlı sonuç#
Zabbix kurulduktan sonra tek başına hiçbir şeyi izlemez; ona neyi izleyeceğini söylemeniz gerekir. İzlenecek her cihaz "host" olarak tanımlanır. Web arayüzünde Data collection → Hosts → Create host yolunu izleyerek bir sunucu eklersiniz. Host oluştururken üç kritik alanı doğru doldurmalısınız: bir isim, en az bir host grubu (örneğin "Linux Sunucular") ve ajanın nasıl erişileceğini belirten arayüz (IP adresi ile 10050 portu). Bu kadarı Zabbix'in ajanla konuşabilmesi için yeterlidir.
Ancak asıl verimlilik şablonlarda (template) gizlidir. Şablon, önceden hazırlanmış bir "ne izlensin, hangi eşikte uyarı üretilsin" paketidir. Her sunucuya CPU, bellek, disk gibi onlarca öğeyi tek tek eklemek yerine, hosta hazır bir şablon bağlarsınız ve bütün bu öğeler, grafikleri ve tetikleyicileriyle birlikte anında gelir. Zabbix, en yaygın senaryolar için kutudan çıkan şablonlarla gelir:
| Şablon | İzlediği hedef |
|---|---|
| Linux by Zabbix agent | Linux sunucu (CPU, RAM, disk, ağ, servisler) |
| Windows by Zabbix agent | Windows sunucu ve hizmetleri |
| MySQL by Zabbix agent 2 | MySQL/MariaDB veritabanı metrikleri |
| Nginx by Zabbix agent | Nginx bağlantı ve istek istatistikleri |
| Generic SNMP | SNMP destekli ağ cihazları |
Örneğin yeni eklediğiniz bir Linux sunucusuna "Linux by Zabbix agent" şablonunu bağladığınızda, birkaç dakika içinde diskin dolmasına, yükün (load average) artmasına, belleğin tükenmesine dair hazır tetikleyiciler devreye girer. Kendi uygulamanıza özel metrikler için ise mevcut bir şablonu klonlayıp üzerine kendi öğelerinizi ekleyebilirsiniz. Bu şablon mantığı, yüzlerce sunucuyu tutarlı biçimde ve dakikalar içinde izlemeye almanın anahtarıdır.
Tetikleyiciler (trigger) ve önem seviyeleri#
Veri toplamak tek başına gürültüdür; asıl değer, o verinin ne zaman "sorun" anlamına geldiğini tanımlamaktan gelir. Bunu yapan bileşen tetikleyicidir (trigger). Bir tetikleyici, bir ya da birkaç öğenin değerine bakan bir mantıksal ifadedir; ifade PROBLEM (sorun) durumuna geçtiğinde Zabbix bir olay (event) üretir. Zabbix'te tetikleyiciler, insan tarafından okunabilir bir ifade diliyle yazılır. Örneğin son 5 dakikanın ortalama CPU kullanımı %90'ı geçtiğinde uyaran bir tetikleyici şöyle görünür:
# Kök dizin (/) diskinde %10'dan az boş alan kaldığında sorun üret
last(/Linux sunucu/vfs.fs.size[/,pfree]) < 10
# Son 5 dakikada CPU yükü ortalaması %90'ı geçtiğinde uyar
avg(/Linux sunucu/system.cpu.util,5m) > 90
Her tetikleyiciye bir önem seviyesi (severity) atanır ve bu seviye, bildirimlerin nasıl yönlendirileceğini doğrudan etkiler. Zabbix altı seviye tanımlar: Not classified, Information, Warning, Average, High ve Disaster. Doğru severity ataması kritiktir; her uyarıyı "Disaster" yaparsanız kısa sürede alarm yorgunluğu yaşar ve gerçek felaketleri kaçırırsınız. İyi bir kurulumda, disk %80'e ulaştığında Warning, %95'e ulaştığında High, tamamen dolduğunda Disaster seviyesinde uyarı üretilir; böylece küçük bir eğilimi izlerken büyük bir olayı da kaçırmamış olursunuz. Zabbix ayrıca tetikleyiciler arasında bağımlılık (dependency) tanımlamaya izin verir: örneğin bir router çöktüğünde arkasındaki 20 sunucunun "erişilemez" alarmını susturarak, kök nedeni tek bir uyarıyla görmenizi sağlar.
SNMP ile ağ cihazı izleme#
Sunuculara ajan kurabilirsiniz, ama bir switch, router, güvenlik duvarı ya da yönetilebilir güç kaynağına yazılım kuramazsınız. Bu cihazların neredeyse tamamı SNMP (Simple Network Management Protocol) konuşur ve Zabbix, SNMP üzerinden bu cihazları ajansız izlemede son derece güçlüdür. SNMP'de her ölçülebilir değer (port trafiği, cihaz sıcaklığı, çalışma süresi) bir OID (Object Identifier) adı taşır; Zabbix bu OID'leri sorgulayarak veri çeker.
Bir ağ cihazını eklemek için host oluştururken arayüz tipini "Agent" yerine "SNMP" seçer, cihazın IP'sini ve SNMP topluluk dizesini (community string, çoğunlukla public) girersiniz. Cihazı önce komut satırından test etmek her zaman iyi bir fikirdir:
# Bir switch'in sistem tanımını SNMPv2 ile sorgula
snmpwalk -v2c -c public 192.168.1.10 system
# Belirli bir arayüzün gelen trafik sayacını oku (ifInOctets)
snmpget -v2c -c public 192.168.1.10 IF-MIB::ifInOctets.2
Güvenlik açısından mümkünse SNMPv3 kullanmalısınız; v1 ve v2c'de community string açık metin olarak gider ve şifreleme yoktur, oysa v3 kimlik doğrulama ve şifreleme sunar. Zabbix'in kutudan çıkan "Generic SNMP" veya cihaz üreticisine özel şablonları, arayüz keşfini (low-level discovery) otomatik yapar: switch'e kaç port takılıysa Zabbix onları kendisi bulur, her biri için ayrı trafik grafiği ve "port down" tetikleyicisi oluşturur. Böylece 48 portlu bir switch'i tek tek elle tanımlamak zorunda kalmazsınız. Ağ katmanını bu düzeyde görebilmek, bir DDoS koruma senaryosunda anormal trafik artışını erkenden fark etmek gibi güvenlik faydaları da sağlar.
Bildirimler ve media type yapılandırması#
İzleme sisteminin bir uyarıyı ekranda göstermesi yetmez; siz uyumaya gittiğinizde de sizi bulabilmesi gerekir. Zabbix'te bir sorun oluştuğunda yapılan işlemler action (aksiyon), bu bildirimin gönderileceği kanal ise media type (ortam türü) olarak adlandırılır. Zabbix kutudan çıkan hâliyle e-posta, Slack, Telegram, Microsoft Teams, Discord, webhook ve SMS gibi pek çok media type ile gelir; ihtiyacınıza göre yenisini de yazabilirsiniz.
Bildirimi ayağa kaldırmak üç adımlıdır. Birincisi, Administration → Media types altında bir kanalı (örneğin "Email") yapılandırıp SMTP sunucu bilgilerini girmek. İkincisi, bir kullanıcının profiline bu media'yı ve adresini (e-posta adresi, Telegram chat ID gibi) eklemek; bir kullanıcı media'sı tanımlı değilse ona hiçbir uyarı ulaşmaz. Üçüncüsü ise Data collection → Actions → Trigger actions altında "hangi koşulda, kime, ne gönderilsin" kuralını tanımlamak. E-posta media type'ının SMTP yapılandırması kabaca şöyledir:
# Zabbix "Email" media type — SMTP ayarları (arayüzden girilir)
SMTP server = smtp.clou.tr
SMTP server port = 587
SMTP helo = clou.tr
SMTP email = [email protected]
Connection security = STARTTLS
Authentication = Username and password
Aksiyon tanımında koşulları katmanlayabilirsiniz: örneğin "severity High veya üzeri" olan sorunlar için nöbetçi ekibe hem e-posta hem Telegram gönderirken, Warning seviyesindeki sorunları yalnızca bir Slack kanalına düşürebilirsiniz. Zabbix'in güçlü bir özelliği olan escalation (kademeli yükseltme) ile "ilk 5 dakikada yanıt gelmezse yöneticiye de haber ver" gibi zincirler kurulur. Ayrıca sorun kapandığında (OK durumu) otomatik "düzeldi" bildirimi göndererek, ekibin bir uyarının hâlâ geçerli olup olmadığını tahmin etmesini önlersiniz. Zabbix'i genellikle bir konteynerde çalıştıran ekipler, konteyner yaşam döngüsünü Portainer gibi araçlarla yönetip izleme yığınını bu şekilde derli toplu tutar.
Zabbix kimler için, ne zaman aşırıya kaçar?#
Zabbix güçlüdür, ama her senaryo için doğru araç değildir. Tek bir web sitesinin ayakta olup olmadığını izlemek, birkaç API uç noktasının yanıt süresini takip etmek ya da müşteriye açık şık bir durum sayfası göstermek istiyorsanız, Zabbix'i kurmak ve bakımını yapmak çoğu zaman fazla ağır kaçar. Bu tür hafif ihtiyaçlar için daha basit araçlar hem daha hızlı kurulur hem daha az kaynak tüketir. Aşağıdaki karşılaştırma, kabaca hangi ölçekte hangi yaklaşımın mantıklı olduğunu özetler:
| Kriter | Basit uptime aracı | Zabbix |
|---|---|---|
| Kurulum ve bakım yükü | Düşük | Orta-yüksek |
| İzlenen cihaz sayısı | Birkaç ile onlarca | Onlarca ile on binlerce |
| Ağ cihazı (SNMP/IPMI) desteği | Sınırlı | Çok güçlü |
| Derin metrik ve trend analizi | Temel | Kapsamlı |
| Kaynak ihtiyacı | Hafif | Veritabanı odaklı, daha ağır |
Zabbix asıl değerini, izlenecek envanter çeşitlendiğinde ve büyüdüğünde gösterir: onlarca sunucu, ağ katmanı, veritabanları, sanallaştırma altyapısı ve iş uygulamaları tek bir merkezde, tutarlı eşikler ve tek bir bildirim akışıyla toplandığında. Bir başka pratik nokta da kaynak planlamasıdır: Zabbix'in kendisi, topladığı geçmiş verinin hacmi büyüdükçe veritabanı I/O'suna duyarlı hâle gelir. Bu yüzden üretimde izleme sunucusunu, disk performansı iyi ve kaynağı garantili bir sanal sunucu veya VDS üzerinde çalıştırmak; geçmiş veri saklama sürelerini (housekeeping) ihtiyaca göre ayarlamak sağlıklı bir kurulumun parçasıdır.
Sıkça Sorulan Sorular#
Zabbix ücretsiz mi?#
Evet, Zabbix tamamen açık kaynak ve ücretsizdir; yazılımı kullanmak, kurmak ve istediğiniz kadar cihazı izlemek için lisans ücreti ödemezsiniz. Yalnızca çalıştıracağınız sunucu kaynağının maliyetini üstlenirsiniz. Zabbix SIA şirketi isteğe bağlı olarak ticari teknik destek, danışmanlık ve eğitim paketleri satar; ancak bunlar yazılımı kullanmanın zorunlu bir koşulu değildir ve tüm özellikler ücretsiz sürümde açıktır.
Zabbix ile Prometheus arasındaki fark nedir?#
İkisi de açık kaynak izleme sistemidir ama felsefeleri farklıdır. Zabbix, kurumsal altyapı izleme için tasarlanmış, kutudan çıkan şablonları, hazır ağ cihazı (SNMP) desteği ve dahili bildirim/arayüz sistemiyle "her şey bir arada" bir çözümdür. Prometheus ise özellikle bulut-doğal ve konteyner tabanlı ortamlarda metrik toplamaya odaklanır, genellikle görselleştirme için Grafana ile birlikte kullanılır ve sorgu dili PromQL üzerine kuruludur. Klasik sunucu ve ağ envanteri için Zabbix, dinamik konteyner/mikroservis dünyası için Prometheus çoğu ekipte daha doğal bir tercihtir.
Zabbix agent kurmak zorunda mıyım?#
Hayır, ajan zorunlu değildir. Zabbix agent, bir sunucunun iç metriklerine (çalışan süreçler, disk ayrıntıları, log dosyaları) en derin erişimi verdiği için sunucular üzerinde önerilir. Ancak ağ cihazları, yazıcılar, UPS'ler gibi yazılım kuramadığınız donanımları SNMP, IPMI veya SSH kontrolleriyle ajansız izleyebilirsiniz. Bir web sitesinin ya da servisin dışarıdan erişilebilirliğini de HTTP kontrolleriyle ajan olmadan takip etmek mümkündür.
Kaç cihaza kadar tek bir Zabbix sunucusu yeter?#
Bu tamamen toplama sıklığına, cihaz başına öğe sayısına ve donanıma bağlıdır. İyi yapılandırılmış ve veritabanı performansı sağlam bir tek sunucu, kolaylıkla birkaç bin hosta ve saniyede binlerce yeni değere (NVPS) hizmet verebilir. Daha büyük ya da coğrafi olarak dağıtık ortamlarda ise Zabbix Proxy kullanılır: proxy'ler veriyi yerelde toplayıp merkezî sunucuya toplu iletir, hem yükü dağıtır hem uzak lokasyonlarda bağlantı kesintilerine dayanıklılık sağlar. Yani ölçek büyüdükçe mimariyi yatay olarak genişletmek mümkündür.
Zabbix verilerini ne kadar süre saklar?#
Saklama süresini siz belirlersiniz ve iki katmanlıdır. Ham veriler (history) genellikle daha kısa süre (örneğin 7-31 gün), sıkıştırılmış özet veriler (trends) ise çok daha uzun süre (örneğin 365 gün ve üzeri) tutulur. Bu ayarları öğe bazında ya da toplu olarak yapılandırır, eski veriyi housekeeping süreciyle otomatik temizletirsiniz. Uzun vadeli ve yoğun ortamlarda, zaman serisi verisini daha verimli sıkıştırdığı için TimescaleDB uzantısıyla PostgreSQL kullanmak disk ve performans açısından ciddi avantaj sağlar.
Kapanış#
Zabbix, birkaç sunucudan koca bir veri merkezine kadar ölçeklenebilen, ajan ve SNMP desteğiyle hem sunucuları hem ağ cihazlarını tek çatı altında izleyen; şablonları, tetikleyicileri ve esnek bildirim sistemiyle sorunları siz fark etmeden yakalayan olgun bir kurumsal izleme platformudur. Doğru kurgulandığında, "bir şeyler yavaş" hissini gerçek verilere dayalı, öngörülebilir bir operasyona dönüştürür.
Bu tür bir izleme yığınını sağlıklı çalıştırmanın temeli, kaynağı garantili ve disk performansı iyi bir altyapıdır. Zabbix'i barındıracağınız bir VDS sunucu veya sanal sunucu ile başlayabilir, kurulum ve sıkılaştırma yükünü üstlenmek istemiyorsanız sunucu yönetimi hizmetimizden faydalanabilir; daha hafif kesinti takibi için ise Uptime Kuma gibi araçlarla küçük başlayıp ihtiyaç büyüdükçe Zabbix'e geçebilirsiniz. Clou.TR olarak hem altyapıyı hem de üzerine kuracağınız izleme çözümünü doğru temellere oturtmanız için yanınızdayız.