Zabbix CentOS ve Rocky Linux’a Kurulum Rehberi

Üretim ortamında izleme sistemi kurmak, “şimdilik bir şeyler çalışsın” zihniyetiyle yaklaşılamayacak kadar kritik bir iştir. Yıllar içinde onlarca şirkette Zabbix kurulumu yaptım ve her seferinde şunu gördüm: Kurulumu doğru yapmak, ilerleyen haftalarda yaşanacak onlarca sorunu peşinen çözüyor. Bu yazıda hem CentOS 7/8 hem de Rocky Linux 8/9 üzerinde Zabbix 6.x kurulumunu, production’a yakın bir yaklaşımla anlatacağım.

Ön Gereksinimler ve Ortam Hazırlığı

Kuruluma başlamadan önce sunucunun temiz olduğundan emin olun. Özellikle daha önce başka izleme araçları denediyseniz, çakışan servisler sizi saatler kaybettirebilir.

Minimum sistem gereksinimleri pratikte şöyle:

  • CPU: 2 çekirdek (50 host altı için yeterli, 500+ host için 4+ çekirdek)
  • RAM: 4 GB (veritabanı aynı sunucudaysa 8 GB öneriyorum)
  • Disk: 50 GB (history retention politikanıza göre bu rakam hızla büyür)
  • OS: CentOS 7/8 veya Rocky Linux 8/9
  • SELinux: Kapalı veya permissive modda (production’da permissive tercih edin, tamamen kapatmak güvenlik açığıdır)

Önce SELinux durumunu kontrol edin:

sestatus
# Permissive moda almak için:
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

Firewall ayarları da önceden yapılmalı. Zabbix default olarak 10051 (server), 10050 (agent) portlarını kullanır:

firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Sistem saatini de doğrulayın. Zabbix grafiklerinde saat kayması yaşıyorsanız troubleshooting kâbusu sizi bekliyor:

timedatectl set-timezone Europe/Istanbul
timedatectl set-ntp true
systemctl enable --now chronyd

Zabbix Repository Kurulumu

Zabbix’in resmi repo’sunu kullanmak şart. Topluluk repo’larından gelen paketlerle ilgili acı deneyimlerim var; versiyon çakışmaları, eksik bağımlılıklar… Resmi yoldan gidin.

CentOS 7 için:

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum clean all

CentOS 8 / Rocky Linux 8 için:

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf clean all

Rocky Linux 9 için:

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
dnf clean all

Rocky Linux 8/9 kullanıyorsanız, PowerTools veya CRB repo’sunun aktif olduğundan emin olun. Bazı Zabbix bağımlılıkları buradan geliyor:

# Rocky Linux 8:
dnf config-manager --set-enabled powertools

# Rocky Linux 9:
dnf config-manager --set-enabled crb

Veritabanı Kurulumu: MariaDB

Zabbix, MySQL/MariaDB, PostgreSQL ve Oracle’ı destekliyor. Ben production ortamları için genellikle MariaDB tercih ediyorum; yönetimi kolay, performansı iyi ve topluluk desteği güçlü. PostgreSQL daha büyük kurulumlar için daha iyi ölçekleniyor ama bu yazıda MariaDB ile devam edeceğiz.

# CentOS 7:
yum install -y mariadb-server mariadb

# CentOS 8 / Rocky Linux 8/9:
dnf install -y mariadb-server mariadb

MariaDB’yi başlatın ve güvenlik ayarlarını yapın:

systemctl enable --now mariadb
mysql_secure_installation

mysql_secure_installation sizi interaktif olarak yönlendirecek. Root şifresi belirleyin, anonymous kullanıcıları kaldırın, remote root login’i devre dışı bırakın. Bunlar temel hijyen kuralları.

Zabbix için veritabanı ve kullanıcı oluşturun:

mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Guclu_Bir_Sifre_Koyun!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;

log_bin_trust_function_creators ayarı önemli. Binary log aktifse ve bunu açmazsanız, şema import işlemi hata verir. Bu hatayı görmüş ve neden kaynaklandığını anlamamış insanları bizzat kurtardım.

Zabbix Server ve Frontend Kurulumu

Temel paketleri kurun:

# CentOS 7:
yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts

# CentOS 8 / Rocky Linux 8/9:
dnf install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts

Zabbix şema dosyasını veritabanına import edin. Bu işlem veritabanı büyüklüğüne göre birkaç dakika sürebilir:

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

Import tamamlandıktan sonra binary log ayarını geri alın:

mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 0;"

Zabbix Server Konfigürasyonu

Ana konfigürasyon dosyası /etc/zabbix/zabbix_server.conf dosyasıdır. Her parametreyi açıklamalıyla anlatmak yerine production’da mutlaka değiştirmeniz gereken kısımlara odaklanıyorum:

nano /etc/zabbix/zabbix_server.conf

Düzenlenecek kritik parametreler:

  • DBPassword: Az önce oluşturduğunuz veritabanı şifresi
  • DBHost: Eğer veritabanı başka bir sunucudaysa IP adresi, localhost ise boş bırakın
  • DBName: zabbix
  • DBUser: zabbix
  • StartPollers: Default 5, 100+ host için 20-30 yapın
  • StartPollersUnreachable: Default 1, 3-5 yapın
  • StartTrappers: Default 5, büyük ortamlar için 10+
  • CacheSize: Default 8M, ciddi ortamlar için 256M veya daha fazla
  • HistoryCacheSize: Default 16M, yoğun metrik toplama için 64M+
  • ValueCacheSize: Default 8M, graph renderlamayı hızlandırır, 64M+ öneririm
# En azından şu satırları düzenleyin:
grep -n "DBPassword|DBHost|DBName|DBUser|CacheSize" /etc/zabbix/zabbix_server.conf

Değişiklikleri yaptıktan sonra:

systemctl enable --now zabbix-server zabbix-agent httpd php-fpm

PHP Konfigürasyonu

Zabbix web arayüzü PHP tabanlı. Birkaç PHP ayarı default değerleriyle gelir ve bunlar web kurulum sihirbazında hata gösterir. Önceden düzeltelim:

# PHP-FPM için Zabbix konfigürasyon dosyası:
nano /etc/php-fpm.d/zabbix.conf

Şu değerleri kontrol edin ve gerekirse düzenleyin:

  • php_value[max_execution_time]: 300 olmalı
  • php_value[memory_limit]: 128M veya daha fazla
  • php_value[post_max_size]: 16M
  • php_value[upload_max_filesize]: 2M
  • php_value[max_input_time]: 300
  • php_value[date.timezone]: Europe/Istanbul olarak ayarlayın
sed -i 's/; php_value[date.timezone].*/php_value[date.timezone] = Europe/Istanbul/' /etc/php-fpm.d/zabbix.conf

PHP-FPM’i yeniden başlatın:

systemctl restart php-fpm

Web Arayüzünden Kurulumu Tamamlama

Tarayıcıdan http://sunucu-ip/zabbix adresine gidin. Kurulum sihirbazı sizi karşılayacak.

Adımlar sırasıyla şöyle ilerler:

  • Welcome: Devam edin
  • Check of pre-requisites: Tüm yeşil görmeli, kırmızı varsa yukarıdaki adımları gözden geçirin
  • Configure DB connection: Veritabanı bilgilerini girin
  • Settings: Zabbix server hostname ve zaman diliminizi girin
  • Pre-installation summary: Kontrol edin
  • Install: Tamamlandı

Default giriş bilgileri:

  • Kullanıcı: Admin
  • Şifre: zabbix

İlk iş olarak bu şifreyi değiştirin. “Sonra değiştiririm” diyenler var, aylar sonra incident sırasında unuttukları default şifresiyle oturan sysadminler var. O grup olmayın.

İlk Agent Yapılandırması

Zabbix server kurulduğunda agent da kurulmuş oldu. Kendi sunucusunu izlemesi için agent’ı yapılandıralım:

nano /etc/zabbix/zabbix_agentd.conf

Kritik parametreler:

  • Server: Zabbix server IP’si (bu durumda 127.0.0.1)
  • ServerActive: Zabbix server IP’si (aktif kontroller için)
  • Hostname: Bu host için benzersiz bir isim, DNS adı idealdir
# Konfigürasyonu hızlıca düzenlemek için:
sed -i 's/^Server=127.0.0.1/Server=127.0.0.1/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=127.0.0.1/ServerActive=127.0.0.1/' /etc/zabbix/zabbix_agentd.conf
sed -i "s/^Hostname=Zabbix server/Hostname=$(hostname -f)/" /etc/zabbix/zabbix_agentd.conf

Agent servisini başlatın:

systemctl enable --now zabbix-agent

Uzak Sunuculara Agent Kurulumu

İzleme sistemi kurmanın asıl amacı uzak sunucuları izlemek. Bir Linux sunucuya agent kurmak şöyle:

# Hedef sunucuda, CentOS/Rocky Linux için:
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf install -y zabbix-agent

Agent konfigürasyonu:

cat > /etc/zabbix/zabbix_agentd.conf << 'EOF'
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=ZABBIX_SERVER_IP
ServerActive=ZABBIX_SERVER_IP
Hostname=bu-sunucunun-hostname
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF

# ZABBIX_SERVER_IP yerine gerçek IP'yi yazın:
sed -i 's/ZABBIX_SERVER_IP/192.168.1.100/' /etc/zabbix/zabbix_agentd.conf

systemctl enable --now zabbix-agent
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload

Host Ekleme ve Template Atama

Zabbix arayüzünden host eklemek için:

  • Configuration > Hosts > Create Host yolunu izleyin
  • Host name: Agent konfigürasyonundaki Hostname ile aynı olmalı (kritik nokta!)
  • Groups: Linux servers grubuna ekleyin
  • Interfaces: Agent seçin, IP adresini girin, port 10050
  • Templates sekmesine geçin ve Linux by Zabbix agent template’ini ekleyin

Template atamak, elle onlarca item tanımlamak yerine tek hamlede 100+ metriği devreye almanızı sağlar. Zabbix’in en güçlü özelliklerinden biri bu.

Temel Sorun Giderme

Kurulum sonrası en sık karşılaşılan sorunlar ve çözümleri:

Zabbix server başlamıyor:

# Log dosyasına bakın, her zaman buradan başlayın:
tail -100 /var/log/zabbix/zabbix_server.log

# Yaygın neden: veritabanı bağlantısı
systemctl status mariadb
mysql -uzabbix -p -e "SELECT 1" zabbix

Host unreachable görünüyor:

# Agent'ın çalışıp çalışmadığını kontrol edin:
systemctl status zabbix-agent

# Bağlantıyı Zabbix server'dan test edin:
zabbix_get -s HEDEF_IP -p 10050 -k agent.ping

# Firewall engel mi:
telnet HEDEF_IP 10050

Web arayüzü açılıyor ama login olunmuyor:

# Apache ve PHP-FPM loglarına bakın:
tail -50 /var/log/httpd/error_log
tail -50 /var/log/php-fpm/error.log

# Zabbix frontend konfigürasyonunun oluştuğunu doğrulayın:
cat /etc/zabbix/web/zabbix.conf.php

MariaDB Performans Tuning

Default MariaDB konfigürasyonu Zabbix için yetersiz kalır. Özellikle birkaç hafta sonra, history tabloları büyüdükçe yavaşlamalar başlar. Önceden ayarlayın:

cat >> /etc/my.cnf.d/zabbix-tuning.cnf << 'EOF'
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = ON
max_connections = 300
EOF

systemctl restart mariadb

innodb_buffer_pool_size değerini toplam RAM’in %50-70’i olarak ayarlayın. 8 GB RAM’li bir sunucuda 4-5 GB idealdir. innodb_flush_log_at_trx_commit = 2 değeri bir miktar ACID uyumluluğundan ödün verir ama Zabbix gibi sürekli yazma yapan uygulamalarda ciddi performans kazancı sağlar. İzleme verisi için bu trade-off kabul edilebilir.

History ve Trend Temizleme (Housekeeping)

Zabbix verisi hızla büyür. Default housekeeping ayarları çoğu zaman yeterli değil. Administration > General > Housekeeping menüsünden şu ayarları gözden geçirin:

  • History storage period: 90 gün yeterli, 30 gün bile yeterli olabilir ihtiyaca göre
  • Trend storage period: 365 gün, bu veriler küçük olduğu için uzun tutabilirsiniz
  • Enable internal housekeeping: Aktif olmalı

Büyük ortamlarda Zabbix’in internal housekeeping’i yetmez. Bu durumda partitioning’e geçmeyi düşünün. Ama bu ayrı bir yazı konusu.

Zabbix Servisleri Yeniden Başlatma Sırası

Servis yeniden başlatma sırasında sıkça yapılan hata: önce server, sonra veritabanı. Doğru sıra şöyle:

# Doğru başlatma sırası:
systemctl start mariadb
systemctl start zabbix-server
systemctl start zabbix-agent
systemctl start httpd
systemctl start php-fpm

# Tüm servislerin durumunu kontrol edin:
systemctl status mariadb zabbix-server zabbix-agent httpd php-fpm

Bu sırayı bir script’e yazıp /usr/local/bin/zabbix-restart.sh olarak kaydetmenizi öneririm. Gece yarısı incident sırasında doğru sırayı hatırlamak istemezsiniz.

Sonuç

Bu kurulum rehberini takip ederek çalışan bir Zabbix sunucusuna sahip oldunuz. Ama kurulum, izleme yolculuğunun başlangıcı. Buradan sonra yapmanız gerekenler:

  • Admin şifresini hemen değiştirin ve güçlü bir şifre belirleyin
  • Kritik sunucularınıza agent kurun ve Linux by Zabbix agent template’ini atayın
  • En az bir bildirim kanalı kurun (e-posta, Telegram, Slack) yoksa alertler görmezden gelinen gürültüye dönüşür
  • Housekeeping politikalarını ortamınıza göre ayarlayın
  • MariaDB backup’ını otomatize edin, Zabbix veritabanı kaybetmek acıtır

Rocky Linux’a geçişle birlikte CentOS 7’den göç eden ortamlarda bu kurulumu defalarca tekrarladım. Rocky Linux 9 özellikle stabil ve Zabbix ile son derece uyumlu çalışıyor. CentOS 7 kullananlar için söyleyeyim: EOL tarihi geçti, göç planınız yoksa başlayın.

Yazının devamında Zabbix’te özel template oluşturma, harici script ile özel metrik toplama ve Grafana entegrasyonunu ele alacağım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir