1. Anasayfa
  2. Uncategorized

Ubuntu 24.04 LTS Üzerinde Zabbix 7.2 Monitoring Kurulumu (Part -2 Kaynak Koddan Kurulum (Installation from Sources))


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 ./configure parametresiyle 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:

  1. ui dizinindeki dosyaları web köküne kopyalarsın
  2. /zabbix gibi 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 &lt;htdocs>/zabbix
cd ui
cp -a . &lt;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:

  1. plugin source arşivini indir/çıkar
  2. plugin dizininde derle:
make
  1. plugin binary path’ini plugin conf’ta belirt:
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
  1. 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.