Zabbix Sorun Giderme: Yaygın Hatalar ve Çözümler

Zabbix kurulumu yaptın, agent’ları bağladın, dashboard’u açtın ve… hiçbir şey gelmiyor. Ya da veri geliyor ama grafikler boş. Ya da alarm çalıyor ama nedeni anlaşılamıyor. Tanıdık geldi mi? Zabbix güçlü bir araç, ama sorun giderme süreci bazen sinir bozucu olabiliyor. Bu yazıda gerçek ortamlarda karşılaştığım yaygın hataları ve çözümlerini paylaşacağım.

Agent Bağlantı Sorunları

Zabbix’te en sık karşılaşılan problem kategorisi, agent’ın server’a bağlanamaması. Önce temel kontrolleri yapalım.

“Cannot connect to Zabbix server” Hatası

Bu hatanın ilk sebebi çoğu zaman firewall. Zabbix server, agent’a 10050 portunu kullanarak bağlanır (passive check). Agent ise server’a 10051 portunu kullanır (active check). Bu iki portu karıştırmak bile başlı başına bir sorun kaynağı.

# Server'dan agent'a bağlantı testi
nc -zv agent_ip 10050

# Agent'tan server'a bağlantı testi
nc -zv zabbix_server_ip 10051

# Port dinleniyor mu kontrol et
ss -tlnp | grep -E "10050|10051"

Eğer nc komutu timeout veriyorsa, firewall kurallarına bakmanız gerekiyor. Linux’ta şöyle yapabilirsiniz:

# firewalld kullanıyorsanız
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --reload

# iptables kullanıyorsanız
iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT
iptables-save > /etc/iptables/rules.v4

Agent Konfigürasyon Dosyası Hataları

/etc/zabbix/zabbix_agentd.conf dosyasında yapılan hatalar, agent’ın hiç başlamamasına neden olabilir. En kritik parametreler şunlar:

  • Server: Passive check için Zabbix server’ın IP’si. Sadece bu IP’den gelen bağlantılara izin verilir.
  • ServerActive: Active check için server IP:port formatında yazılır.
  • Hostname: Zabbix arayüzündeki host adıyla birebir eşleşmeli. Büyük/küçük harf duyarlı.
  • ListenPort: Agent’ın dinleyeceği port, varsayılan 10050.
  • ListenIP: Boş bırakılırsa tüm interface’leri dinler, specific IP girilirse sadece o.
# Agent konfigürasyonunu test et
zabbix_agentd -t system.uptime
zabbix_agentd --print

# Agent log dosyasını takip et
tail -f /var/log/zabbix/zabbix_agentd.log

Hostname parametresi konusunda dikkatli olun. Zabbix arayüzünde host tanımlarken “Host name” alanına ne yazdıysanız, agent konfigürasyonundaki Hostname ile aynı olmalı. “linux-server-01” ile “Linux-Server-01” farklı şeyler.

Veri Toplanmıyor veya “No Data” Sorunu

Dashboard’da host görünüyor, yeşil yanıyor ama grafikler boş. Bu durum birkaç farklı sebepten kaynaklanabilir.

Item’ların “Not Supported” Durumu

# Server tarafında item test etmek için
zabbix_get -s agent_ip -p 10050 -k "system.cpu.util[,idle]"
zabbix_get -s agent_ip -p 10050 -k "vfs.fs.size[/,free]"

# Birden fazla item test etmek için döngü
for key in "system.uptime" "system.cpu.load" "vm.memory.size[available]"; do
    echo -n "$key: "
    zabbix_get -s 192.168.1.100 -p 10050 -k "$key"
done

“Not Supported” durumundaki item’lar için Zabbix arayüzünde Configuration > Hosts > Items bölümünden filtreleme yapabilirsiniz. Item’a tıklayıp “Execute now” yaparak manuel test edebilirsiniz.

SNMP Bağlantı Sorunları

SNMP üzerinden izleme yapıyorsanız, community string ve SNMP version uyumsuzluğu sık karşılaşılan bir sorun:

# SNMP v2c testi
snmpwalk -v2c -c public switch_ip .1.3.6.1.2.1.1.1.0

# SNMP v3 testi
snmpwalk -v3 -l authPriv -u kullanici -a SHA -A "auth_password" 
  -x AES -X "priv_password" switch_ip .1.3.6.1.2.1.1.1.0

# OID değerini doğrudan çek
snmpget -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.3.0

SNMP timeout hataları için Zabbix’teki host konfigürasyonunda “Timeout” değerini artırmanız gerekebilir. Varsayılan 3 saniye, ağ gecikmeleri olan ortamlarda bu yetersiz kalabiliyor.

Zabbix Server ve Proxy Performans Sorunları

Ortam büyüdükçe performans sorunları kaçınılmaz oluyor. 500+ host, binlerce item… Bu noktada Zabbix server’ın kendisi darboğaz olmaya başlıyor.

Zabbix Server İç Process Yoğunluğu

# Zabbix server istatistiklerini görüntüle
zabbix_server -R diaginfo

# Internal process durumunu kontrol et (Zabbix log'larından)
grep "busy" /var/log/zabbix/zabbix_server.log | tail -20

# Database bağlantı havuzunu izle
watch -n 5 'mysql -uzabbix -p zabbix -e "SHOW PROCESSLIST;" | wc -l'

zabbix_server.conf dosyasında ayarlanması gereken kritik parametreler:

  • StartPollers: Passive check yapan worker sayısı. Her 500 item için 1 poller önerilir.
  • StartPollersUnreachable: Erişilemeyen host’lar için poller sayısı.
  • StartTrappers: Active agent ve trapper item’ları için worker sayısı.
  • StartDiscoverers: Network discovery için worker sayısı.
  • CacheSize: Host, item, trigger konfigürasyonunu tutan cache boyutu. 8M ile başlayın.
  • HistoryCacheSize: Toplanan veriyi veritabanına yazmadan önce bellekte tutan cache.
  • TrendCacheSize: Trend verisi için cache boyutu.
  • DBConnPoolSize: Veritabanı bağlantı havuzu boyutu.
# zabbix_server.conf örnek optimizasyon
cat /etc/zabbix/zabbix_server.conf | grep -E "^Start|^Cache|^DB"

# Değişiklik sonrası yeniden başlat
systemctl restart zabbix-server

# Log'larda "busy" uyarılarını takip et
tail -f /var/log/zabbix/zabbix_server.log | grep -i "busy|warning|error"

Veritabanı Performans Sorunları

MySQL/MariaDB kullananlar için history tabloları zamanla şişiyor. Bu hem disk alanını tükletiyor hem de sorgular yavaşlıyor.

# En büyük tabloları listele
mysql -uzabbix -p zabbix -e "
SELECT table_name, 
       ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'MB'
FROM information_schema.TABLES 
WHERE table_schema = 'zabbix' 
ORDER BY (data_length + index_length) DESC 
LIMIT 10;"

# History temizleme (housekeeper) durumunu kontrol et
grep -i "housekeeper" /var/log/zabbix/zabbix_server.log | tail -20

# Eski history verilerini manuel temizle (dikkatli kullanın!)
mysql -uzabbix -p zabbix -e "
DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)) LIMIT 100000;"

Housekeeper ayarları için Zabbix arayüzünde Administration > General > Housekeeping bölümüne gidin. “Enable internal housekeeping” seçeneğinin aktif olduğundan emin olun. Eğer veritabanı çok büyüdüyse housekeeper kendi başına yetişemeyebilir, bu durumda partition kullanımını değerlendirmenizi tavsiye ederim.

Trigger ve Alarm Sorunları

Trigger Çalışmıyor veya Yanlış Alarm Üretiyor

Bir trigger yazdınız ama hiç alarm gelmiyor. Ya da tam tersi, sürekli alarm geliyor. İki durum için de debug yöntemi aynı:

# Trigger expression'ı test etmek için Zabbix expression evaluator kullanın
# Arayüzde: Configuration > Hosts > Triggers > trigger seç > Test

# Agent'tan anlık değer al ve trigger mantığıyla karşılaştır
zabbix_get -s 192.168.1.100 -p 10050 -k "vm.memory.size[pavailable]"

# Zabbix server log'larında trigger işlemlerini izle
grep -i "trigger" /var/log/zabbix/zabbix_server.log | tail -30

Trigger expression yazarken sık yapılan hata, fonksiyon seçimini yanlış yapmak. Örneğin last() fonksiyonu anlık değeri alırken avg() belirtilen süredeki ortalamayı verir. Bellek kullanımı için şu şekilde bir trigger düşünelim:

{linux-server-01:vm.memory.size[pavailable].last()}<10

Bu trigger anlık yüzde 10’un altına düştüğünde alarm üretir. Ama bu çok gürültülü olabilir. Daha sağlıklı bir yaklaşım:

{linux-server-01:vm.memory.size[pavailable].min(5m)}<10

Son 5 dakikanın minimumu yüzde 10’un altındaysa alarm üret. Çok daha az false positive.

Bildirim (Notification) Gönderilmiyor

Media type konfigürasyonu doğru ama mail gelmiyor. Önce action log’larına bakın:

# Zabbix action log'larını kontrol et
# Arayüzde: Reports > Action Log

# SMTP bağlantısını test et
telnet smtp_server 25
# veya
openssl s_client -connect smtp_server:587 -starttls smtp

# Mail gönderim scriptini manuel test et (custom media type kullanıyorsanız)
/usr/lib/zabbix/alertscripts/sendmail.sh "[email protected]" "Test Subject" "Test Body"

Gmail veya Office 365 kullanıyorsanız, uygulama şifresi oluşturmanız gerekebilir. 2FA aktifse normal şifreniz çalışmaz.

Zabbix Proxy Sorunları

Proxy kullandığınızda sorun giderme biraz daha karmaşık hale geliyor çünkü artık üç katman var: agent, proxy, server.

# Proxy'nin server'a bağlantısını kontrol et
nc -zv zabbix_server_ip 10051

# Proxy log'larını incele
tail -f /var/log/zabbix/zabbix_proxy.log

# Proxy'deki birikmş veri miktarını kontrol et
mysql -uzabbix_proxy -p zabbix_proxy -e "
SELECT COUNT(*) as bekleyen_kayit FROM proxy_history;"

# Proxy veritabanı boyutunu kontrol et
mysql -uzabbix_proxy -p zabbix_proxy -e "
SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'MB'
FROM information_schema.TABLES 
WHERE table_schema = 'zabbix_proxy'
ORDER BY (data_length + index_length) DESC;"

Proxy’nin server’a bağlanamadığı durumlarda, proxy veritabanı şişmeye başlar. Bağlantı yeniden kurulduğunda toplu veri aktarımı olur ve bu server tarafında geçici yük oluşturur. Proxy bağlantı sorunlarını erkenden tespit etmek için “zabbix[proxy,proxy_adı,lastaccess]” item’ını izleyin.

Proxy pasif/aktif mod karışıklığı da sık karşılaşılan bir sorun. Zabbix arayüzünde proxy passive olarak tanımlandıysa, server proxy’ye bağlanmayı dener. Active olarak tanımlandıysa proxy server’a bağlanır. zabbix_proxy.conf dosyasındaki ProxyMode parametresi ile arayüzdeki ayar mutlaka uyuşmalı.

JMX ve WMI İzleme Sorunları

Java Gateway Bağlantı Hataları

JMX ile Java uygulamalarını izlerken “Cannot connect to JMX agent” hatası alıyorsanız:

# Java Gateway servisini kontrol et
systemctl status zabbix-java-gateway

# Java Gateway log'ları
tail -f /var/log/zabbix/zabbix_java_gateway.log

# JMX portunu test et (uygulama sunucusunda)
jconsole service:jmx:rmi:///jndi/rmi://uygulama_ip:12345/jmxrmi

# zabbix_server.conf'da Java Gateway ayarları
grep -E "JavaGateway|StartJavaPollers" /etc/zabbix/zabbix_server.conf

JMX izlemesi için hedef Java uygulamasının JVM parametrelerine şunları eklemeniz gerekiyor:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=uygulama_ip

java.rmi.server.hostname parametresini unutmak en yaygın hatalardan biri. Bu parametre olmadan JMX bağlantısı kurulsa bile veri transferi gerçekleşmeyebilir.

Log İzleme Sorunları

Zabbix ile log dosyalarını izlemek güçlü bir özellik ama konfigürasyonu biraz ince ayar istiyor.

# Log item'ını agent üzerinde test et
zabbix_agentd -t "log[/var/log/uygulama/error.log,ERROR,,100]"

# Log dosyasına yazma testi
echo "TEST ERROR $(date)" >> /var/log/uygulama/error.log

# Agent'ın log dosyasına erişimi var mı?
sudo -u zabbix cat /var/log/uygulama/error.log | head -5

# SELinux engeli var mı?
ausearch -m avc -ts recent | grep zabbix

Log izlemede sık yapılan hatalar:

  • zabbix kullanıcısının dosyaya okuma izni yok: Log dosyasının group’una zabbix kullanıcısını ekleyin veya ACL kullanın.
  • maxlines parametresi çok düşük: Varsayılan 200 satır. Çok fazla log üretiliyorsa bazı kayıtlar atlanabilir.
  • encoding sorunu: Türkçe karakter içeren log dosyalarında encoding parametresini doğru set edin.
  • Log rotation sonrası kesinti: logrt item tipi kullanarak log rotation’ı handle edebilirsiniz.

Sık Karşılaşılan Genel Hatalar

“Received empty response from Zabbix Agent”: Agent çalışıyor ama veri göndermiyor. Genellikle item key’i yanlış veya agent o key’i desteklemiyor.

“ZBX_NOTSUPPORTED: Cannot obtain required information”: Agent key destekliyor ama gerekli izinler yok. Özellikle /proc dosyalarına erişimde bu hata görülür.

“Host interface is unreachable”: Host unreachable olarak işaretlendi. UnreachablePeriod ve UnreachableDelay parametrelerini kontrol edin.

“Timeout while executing a shell script”: UserParameter ile custom script kullanıyorsanız ve script yavaşsa timeout alırsınız. zabbix_agentd.conf dosyasındaki Timeout parametresini artırın, maksimum 30 saniye.

# UserParameter scriptini agent kullanıcısıyla test et
sudo -u zabbix /usr/local/bin/custom_check.sh

# zabbix_agentd.conf timeout artırma
sed -i 's/^# Timeout=3/Timeout=15/' /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent

Zabbix Arayüz ve API Sorunları

Web arayüzü yüklenmiyor veya yavaş açılıyorsa PHP ve web server ayarlarına bakın:

# PHP hata loglarını kontrol et
tail -f /var/log/php-fpm/www-error.log

# Apache/Nginx access log'larında hataları gör
grep -E "500|502|504" /var/log/nginx/zabbix_error.log | tail -20

# Zabbix web konfigürasyonunu kontrol et
cat /etc/zabbix/web/zabbix.conf.php

# PHP session dizini yazılabilir mi?
ls -la /var/lib/php/session/

PHP memory_limit ve max_execution_time değerleri Zabbix için önerilenden düşükse arayüz sorunları yaşanır. /etc/php.ini dosyasında minimum:

  • memory_limit: 128M
  • post_max_size: 16M
  • max_execution_time: 300
  • max_input_time: 300
  • date.timezone: Europe/Istanbul

Sonuç

Zabbix sorun giderme, katmanlı bir süreç. Agent’tan başlayıp server’a, oradan veritabanına kadar her katmanı ayrı ayrı kontrol etmek gerekiyor. Log dosyaları en iyi arkadaşınız, tail -f komutunu hiç bırakmayın. zabbix_get aracı ise ikinci en kritik silahınız, herhangi bir item’ı server tarafından test etmenize olanak tanıyor.

Performans sorunlarının büyük çoğunluğu yetersiz cache boyutları ve veritabanı şişmesinden kaynaklanıyor. Sisteminiz büyüdükçe bu parametreleri periyodik olarak gözden geçirin. Proxy kullanımı büyük ortamlarda hem güvenilirliği artırıyor hem de server üzerindeki yükü dağıtıyor.

Son olarak, Zabbix topluluğu oldukça aktif. Karşılaştığınız hata mesajını Zabbix forum’unda veya GitHub issues’da aratmadan önce bu yazıda anlattığım temel adımları geçin. Sorunların yüzde doksanı bu yazıdaki kontroller sırasında zaten çözülüyor.

Bir yanıt yazın

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