1. Anasayfa
  2. Uncategorized

Ubuntu 24.04 LTS Üzerinde Zabbix 7.2 Monitoring Kurulumu (Part -3 Kaynak Koddan Kurulum (Installation from Sources)) – Örnek Derlemeler


Aşağıdaki rehber, Ubuntu 24.04 LTS üzerinde Zabbix 7.4’ü kaynak koddan (source) derleyerek kurmak için uçtan uca bir “runbook”tur: dependency paketleri, veritabanı hazırlığı, derleme, frontend kurulumu, systemd unit dosyaları ve servisleri ayağa kaldırma adımları dahil.

Not: Source kurulumda yolları ve kullanıcıları standartlaştırmak için /usr/local + /etc/zabbix + ayrı servis kullanıcıları (server/agent) yaklaşımını kullanıyorum (best practice).

0) Hazırlık: Sunucu güncelleme + temel araçlar

sudo -s
apt update && apt upgrade -y
apt install -y curl wget git vim nano unzip ca-certificates gnupg lsb-release

1) Zabbix için kullanıcılar ve dizinler (Best practice)

1.1 Ayrı kullanıcılar (server/agent ayrı)

addgroup --system --quiet zabbixsrv
adduser  --system --disabled-login --ingroup zabbixsrv --home /var/lib/zabbix --no-create-home zabbixsrv

addgroup --system --quiet zabbixagt
adduser  --system --disabled-login --ingroup zabbixagt --home /var/lib/zabbix --no-create-home zabbixagt

1.2 Dizinler

mkdir -p /etc/zabbix
mkdir -p /var/log/zabbix
mkdir -p /var/lib/zabbix
mkdir -p /run/zabbix

chown -R zabbixsrv:zabbixsrv /var/log/zabbix /run/zabbix
chown -R zabbixagt:zabbixagt /var/lib/zabbix
chmod 0755 /run/zabbix

2) Build dependency paketleri (Ubuntu 24.04)

Aşağıdakiler, Zabbix server + agent (agentd) derlemek için tipik ve güvenli bir set:

apt install -y \
  build-essential pkg-config autoconf automake libtool \
  libpcre2-dev libevent-dev zlib1g-dev \
  libcurl4-openssl-dev libxml2-dev \
  libsnmp-dev libssh2-1-dev \
  libopenipmi-dev \
  libldap2-dev libsasl2-dev \
  libssl-dev \
  default-libmysqlclient-dev

DB tercihi PostgreSQL ise default-libmysqlclient-dev yerine libpq-dev kurup configure’da --with-postgresql kullanırsın.

3) Veritabanı (MySQL/MariaDB) kurulumu ve Zabbix DB hazırlığı

3.1 MariaDB (Ubuntu repo) kurulumu

Ubuntu 24.04’te pratik ve yaygın tercih: MariaDB (MySQL uyumlu).

apt install -y mariadb-server
systemctl enable --now mariadb

3.2 DB ve kullanıcı

Aşağıdaki örnekte DB adı zabbix, kullanıcı zbxuser. Parolayı kendine göre değiştir.

mysql -uroot <<'SQL'
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zbxuser'@'localhost' IDENTIFIED BY 'Str0ngPassw0rd!ChangeMe';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zbxuser'@'localhost';
FLUSH PRIVILEGES;
SQL

4) Zabbix 7.4 kaynak kodunu indir ve çıkar

4.1 Arşiv indir (örnek sürüm: 7.4.0)

Sürümü ihtiyacına göre güncelle.

cd /usr/src
wget -O zabbix-7.4.0.tar.gz https://cdn.zabbix.com/zabbix/sources/stable/7.4/zabbix-7.4.0.tar.gz
tar -zxvf zabbix-7.4.0.tar.gz
cd zabbix-7.4.0

5) Derleme: configure / make / make install

5.1 Configure (Server + Agent)

Bu komut, server + agentd derler; MySQL/MariaDB backend kullanır; SNMP, curl, XML, IPMI, LDAP, SSH gibi tipik özellikleri açar:

export CFLAGS="-std=gnu99"

./configure \
  --prefix=/usr/local \
  --sysconfdir=/etc/zabbix \
  --enable-server \
  --enable-agent \
  --with-mysql \
  --with-net-snmp \
  --with-libcurl \
  --with-libxml2 \
  --with-openipmi \
  --with-ssh2 \
  --with-ldap \
  --with-openssl

Hata alırsan en hızlı teşhis: config.log dosyasına bakılmalıdır.

5.2 Derle ve kur

make -j"$(nproc)"
make install

Kurulum sonrası beklenen binary yolları:

  • Server: /usr/local/sbin/zabbix_server
  • Agent: /usr/local/sbin/zabbix_agentd
  • Tools: /usr/local/bin/zabbix_get /usr/local/bin/zabbix_sender
  • Conf: /etc/zabbix/*.conf (biz sysconfdir böyle verdik)

6) Zabbix Server DB şemasını import et

Source tree içindeki SQL dosyaları Zabbix sürümüne göre klasörlenir. Zabbix 7.x’te MySQL/MariaDB için genel yaklaşım schema + images + data import etmektir.

Aşağıdaki komutları Zabbix kaynak dizininde çalıştır:

cd /usr/src/zabbix-7.4.0

# DB import (MySQL/MariaDB)
mysql -u zbxuser -p zabbix < database/mysql/schema.sql
mysql -u zbxuser -p zabbix < database/mysql/images.sql
mysql -u zbxuser -p zabbix < database/mysql/data.sql

Eğer dosya yolları farklı görünürse (bazı paketlerde alt klasörler değişebilir), find database -maxdepth 3 -type f | grep mysql ile kontrol et.

7) Zabbix konfigürasyon dosyaları

7.1 Server conf (oluştur)

Source kurulumda örnek conf’lar conf/ veya misc/conf/ altında olabilir. Pratik yöntem: örnek conf’u kopyalayıp düzenlemek.

Örnek kopyalama (dosya yoksa find ile yerini bul):

cd /usr/src/zabbix-7.4.0
find . -maxdepth 3 -name "zabbix_server.conf" -o -name "zabbix_agentd.conf"

# Örnek varsayım:
cp -v conf/zabbix_server.conf /etc/zabbix/zabbix_server.conf
cp -v conf/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf

7.2 /etc/zabbix/zabbix_server.conf düzenle

nano /etc/zabbix/zabbix_server.conf

Minimum kritik parametreler:

DBHost=localhost
DBName=zabbix
DBUser=zbxuser
DBPassword=Str0ngPassw0rd!ChangeMe

LogFile=/var/log/zabbix/zabbix_server.log
PidFile=/run/zabbix/zabbix_server.pid

Best practice: Büyük ortamlarda Cache/Poller/Preprocessing ayarları optimize edilir; şimdilik default’lar ile başlayıp yük ölçerek büyütmek mantıklı.

7.3 /etc/zabbix/zabbix_agentd.conf düzenle

nano /etc/zabbix/zabbix_agentd.conf

Önerilen temel:

Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix-Server

LogFile=/var/log/zabbix/zabbix_agentd.log
PidFile=/run/zabbix/zabbix_agentd.pid

Agent başka makinelerde olacaksa Server= satırına Zabbix Server IP’sini yaz.

8) Systemd unit dosyaları (server + agent)

8.1 Zabbix Server unit

/etc/systemd/system/zabbix-server.service oluştur:

cat >/etc/systemd/system/zabbix-server.service <<'EOF'
[Unit]
Description=Zabbix Server (source build)
After=network.target mariadb.service
Wants=mariadb.service

[Service]
Type=forking
User=zabbixsrv
Group=zabbixsrv

RuntimeDirectory=zabbix
RuntimeDirectoryMode=0755

PIDFile=/run/zabbix/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5s

LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

8.2 Zabbix Agent unit

/etc/systemd/system/zabbix-agent.service oluştur:

cat >/etc/systemd/system/zabbix-agent.service <<'EOF'
[Unit]
Description=Zabbix Agent (source build)
After=network.target

[Service]
Type=forking
User=zabbixagt
Group=zabbixagt

RuntimeDirectory=zabbix
RuntimeDirectoryMode=0755

PIDFile=/run/zabbix/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5s

LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

8.3 systemd reload + enable + start

systemctl daemon-reload
systemctl enable --now zabbix-server zabbix-agent
systemctl status zabbix-server zabbix-agent --no-pager

Log kontrol:

tail -n 200 /var/log/zabbix/zabbix_server.log
tail -n 200 /var/log/zabbix/zabbix_agentd.log

9) Frontend (Web UI) kurulumu (Apache + PHP)

9.1 Apache + PHP + gerekli PHP extension’lar

Ubuntu 24.04’te PHP 8.3 yaygın gelir.

apt install -y apache2 php php-mysql php-gd php-xml php-bcmath php-mbstring php-ldap php-curl
systemctl enable --now apache2

9.2 PHP ayarları (Zabbix için önerilen)

cat >/etc/php/8.3/apache2/conf.d/99-zabbix.ini <<'EOF'
memory_limit = 256M
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
upload_max_filesize = 16M
date.timezone = Europe/Istanbul
EOF

systemctl restart apache2

9.3 Zabbix UI dosyalarını kopyala

Source dizinindeki ui klasörünü web root altına al:

mkdir -p /var/www/html/zabbix
cp -a /usr/src/zabbix-7.4.0/ui/. /var/www/html/zabbix/
chown -R www-data:www-data /var/www/html/zabbix

Tarayıcıdan:

  • http://SUNUCU_IP/zabbix

Kurulum sihirbazında DB bilgilerini gir:

  • DB: zabbix
  • User: zbxuser
  • Password: (belirlediğin parola)
  • Host: localhost

10) Firewall (UFW) hızlı açılımlar (opsiyonel)

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10051/tcp
ufw allow 10050/tcp
ufw enable
ufw status

Daha güvenlisi: 10050/10051’i sadece gerekli network’lere sınırlandırmak.

11) Hızlı doğrulama checklist

  • Servisler ayakta mı?
systemctl is-active zabbix-server
systemctl is-active zabbix-agent
  • Portlar dinliyor mu?
ss -lntp | egrep '10050|10051|80'

  • DB tabloları oluştu mu?
mysql -u zbxuser -p -e "USE zabbix; SHOW TABLES;" | head