
Zabbix’i en güncel sürümüyle kullanmanın en doğrudan yolu kaynak koddan derleyerek kurmaktır. Bu yöntem özellikle özel derleme seçenekleri belirli kütüphane sürümleri, özel path/prefix ihtiyaçları veya dağıtım paketlerinin gecikmeli kaldığı ortamlarda tercih edilir.
Ancak burada kritik nokta şudur; Kaynak koddan kurulum size maksimum kontrol sağlar ama bakım maliyetini de artırır. Güncelleme, bağımlılık yönetimi, servis dosyaları ve güvenlik güncellemeleri paket kurulumuna göre daha çok “sorumluluk” getirir.
Kaynak koddan kurulum ne zaman mantıklı?
- Özel bir
./configureparametresiyle belli özellikleri açıp kapatmak istiyorsan, - Paket sürümü ile dokümantasyon/özellik farkı yaşıyorsan,
- Derleme çıktısını farklı sistemlere dağıtman gerekiyorsa (nadiren),
- Standart repo yerine “tam kontrol” hedefleniyorsa,
Best practice: Production ortamlarının çoğunda “distribution packages” daha sürdürülebilirdir. Kaynak koddan kurulum genelde özel ihtiyaç varsa tercih edilmelidir.
1) Zabbix Daemon’larını Kurmak
Adım 1: Kaynak Arşivi İndirme ve Çıkarma
Zabbix’in indirme sayfasından uygun sürümün source arşivini indirip açabilirsiniz.
tar -zxvf zabbix-7.4.0.tar.gz
Best practice: Komuttaki sürüm indirdiğin dosya adıyla birebir aynı olmalı.
Adım 2: Zabbix Sistem Kullanıcısı Oluşturma (Güvenlik Temeli)
Zabbix daemon süreçleri yetkisiz (unprivileged) bir kullanıcı altında çalıştırılmalıdır.
Default davranış olarak daemon root ile başlatılsa bile çalışırken zabbix kullanıcısına düşer bu yüzden sistemde bu kullanıcı/grup bulunmalıdır.
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
Frontend için ayrı kullanıcı açmaya gerek yoktur.
Kritik Güvenlik Önerisi
Eğer Zabbix server ve agent aynı makinede çalışacaksa server ve agent’ı ayrı kullanıcılarla çalıştırmak önerilir.
Neden?
Aynı kullanıcıyla çalışırlarsa agent, server konfigürasyon dosyasını okuyabilir ve bu dosyada DB parolası gibi hassas bilgiler bulunabilir.
Bu Zabbix arayüzünde “Admin” yetkisi olan herhangi bir kişinin dolaylı olarak kritik bilgilere erişebilmesi riskini artırır.
Asla Zabbix’i root, bin gibi ayrıcalıklı hesaplarla kalıcı çalıştırmayınız.
Home Directory (Opsiyonel)
Normalde Zabbix süreçlerinin home dizinine ihtiyacı yoktur ve genelde önerilmez. Ama bazı senaryolarda (ör. $HOME/.my.cnf ile MySQL credential saklamak gibi) gerekebilir.
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
Best practice: Credential saklama işini mümkünse .my.cnf yerine vault/secret yaklaşımıyla çözmek daha güvenlidir.
Adım 3: Zabbix Veritabanını Oluşturma
Zabbix server/proxy ve frontend için veritabanı şarttır. (Agent için gerekmez.)
Burada önemli ayrım:
- Proxy DB: sadece schema yeterli
- Server DB: schema + başlangıç dataset’i gerekir
Best practice: Orta-büyük kurulumlarda DB’yi ayrı sunucuya koymayı baştan planlayınız. Performans ve yönetim açısından oldukça önemlidir.
Adım 4: Kaynak Kodun Configure Edilmesi (Derleme Seçenekleri)
Zabbix server/proxy/agent derlemek için C99 + GNU extensions gerekir. Gerekirse CFLAGS ile netleştirebilirsin:
export CFLAGS="-std=gnu99"
Git repo’dan kuruyorsan
Arşiv yerine Git’ten aldıysan önce:
./bootstrap.sh
Tüm seçenekleri görmek
./configure --help
Örnek configure komutları
Server + Agent, MySQL ile (zengin özellik seti):
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 \
--with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares
Server, PostgreSQL ile (daha sade örnek):
./configure --enable-server --with-postgresql --with-net-snmp
Proxy, SQLite ile:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2
Agent:
./configure --enable-agent
Agent 2:
./configure --enable-agent2
Not: Agent 2 ve bazı eklentiler için desteklenen bir Go sürümü gerekir.
Derleme Opsiyonları: Saha Notları
--enable-agent: agent + zabbix_get + zabbix_sender araçlarını da derler--with-libcurl: VMware monitoring, SMTP auth,web.page.*item’ları gibi özellikler için kritik--with-libxml2: VMware monitoring için gerekir--with-libpcre2[=DIR]: Zabbix zaten PCRE2 ile derlenir; custom path vermek içindir--with-mysql=/path/to/mysql_config: birden fazla mysql/mariadb client varsa doğru client’ı seçmeye yarar--enable-static: bazı dağıtım senaryolarında işe yarar ama server için genelde önerilmez--with-stacksize=<KB>: preprocessing gibi işlerde stack overflow görülürse artırılabilir
./configure hatası alırsan
İlk bakışta hata “mysqlclient yok” gibi görünse bile kök sebep başka bir kütüphane olabilir (ör. ssl/crypto eksikliği). Bu yüzden config.log dosyasını mutlaka inceleyiniz.
Best practice: Derleme için gerekli bağımlılıkları (libssl-dev, libcurl-dev, libsnmp-dev vb.) baştan belirleyip kurmak, configure sırasında zaman kazandırır.
Adım 5: Derleme ve Kurulum (make & make install)
Git repo’dan kurulumda bazı adımlar ek olabilir (ör. dbschema).
Genel olarak:
make install
Kurulum için genelde root/sudo gerekir.
Varsayılan kurulum yolları:
- daemon binary’leri:
/usr/local/sbin - client araçları:
/usr/local/bin
Farklı dizine kurmak istersen --prefix kullanırsın:
./configure --prefix=/home/zabbix ...
Adım 6: Konfigürasyon Dosyalarını Düzenleme
Kaynak koddan kurulumda config dosyaları genelde:
- Agent:
/usr/local/etc/zabbix_agentd.conf - Server:
/usr/local/etc/zabbix_server.conf - Proxy:
/usr/local/etc/zabbix_proxy.conf
Agent için kritik ayar
Agent’in hangi server’dan bağlantı kabul edeceğini tanımlamalısın. Aksi halde farklı kaynaklardan gelen istekler reddedilir.
Server için kritik ayar
DBName, DBUser, DBPassword gibi veritabanı parametreleri doğru girilmeli.
Best practice: Küçük kurulumlarda default değerler iş görür; ölçek büyüdükçe cache ayarları, poller sayıları, preprocessing thread’leri gibi alanlar optimize edilmelidir.
Proxy (SQLite) notu
SQLite kullanıyorsan:
- DB user/password gerekmez
- DB dosyasının tam path’i verilmelidir
Adım 7: Daemon’ları Başlatma
Server tarafında:
zabbix_server
Agent’ların olduğu makinelerde:
zabbix_agentd
Proxy varsa:
zabbix_proxy
Shared memory uyarıları
Bazı sistemlerde shared memory tahsisi sınırlı olabilir. “Cannot allocate shared memory for … cache” gibi hatalar bu yüzden görülebilir.
Best practice: Production ortamlarında servis yönetimi için systemd unit dosyaları yazıp servisleri systemctl ile yönetmek daha doğru olur.
2) Zabbix Web Arayüzünü Kurmak (Frontend)
Zabbix frontend PHP ile yazıldığı için PHP destekli bir web server gerekir. Kaynak kurulum senaryosunda kurulum çoğu zaman şu şekilde yapılır:
uidizinindeki dosyaları web köküne kopyalarsın/zabbixgibi bir alt dizin kullanmak önerilir
Örnek mantık:
- Apache default örnek yollar:
/var/www/html(Debian/Ubuntu/RHEL/Fedora)/usr/local/apache2/htdocs(Apache source kurulumlarında)/srv/www/htdocs(SUSE)
Örnek:
mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix
Sonrasında web arayüz kurulum sihirbazı ile devam edilir.
Best practice: UI’ı root dizine değil /zabbix altına koymak, ters proxy/WAF gibi katmanlarda daha temiz yönetim sağlar.
3) Zabbix Agent 2 Loadable Plugins (Opsiyonel)
Agent 2’nin built-in plugin’leri yeterli değilse (ör. MongoDB, PostgreSQL, MSSQL gibi spesifik izlemeler) loadable plugin kurabilirsin.
Genel yaklaşım:
- plugin source arşivini indir/çıkar
- plugin dizininde derle:
make
- plugin binary path’ini plugin conf’ta belirt:
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
- agent2 conf içinde Include ile plugin conf’u dahil et:
Include=/path/to/plugin/configuration/file/postgresql.conf
Best practice: Plugin README dosyası “asıl doğru kaynaktır”; her plugin’in bağımlılığı ve konfigürasyonu farklı olabilir.
4) Java Gateway (Sadece JMX İzleme İçin)
JMX uygulamalarını izlemek istiyorsan Java gateway gerekir. DB’ye ihtiyaç duymaz, hafiftir.
Derlerken:
./configure --enable-java --prefix=$PREFIX
make
make install
Jar üretimi için javac ve jar gerekir.
5) Zabbix Web Service (Scheduled Reports İçin)
Zamanlanmış raporlar (scheduled reports) kullanacaksan web service kurulur.
Derleme:
./configure --enable-webservice
Çalıştırma:
zabbix_web_service
Best practice: Scheduled report tarafında Chrome dependency ve sürüm uyumluluğu konusu önemlidir; bunu da deployment planına dahil et.