Zabbix Agent ile Windows Sunucuları İzleme
Windows ortamlarında izleme işi, Linux tarafına kıyasla her zaman biraz daha “uğraştırıcı” olmuştur. Firewall kuralları, WMI izinleri, servis hesabı karmaşası… Ama Zabbix Agent ile bu süreci oldukça sistematik bir hale getirmek mümkün. Bu yazıda Windows sunucularını Zabbix ile izlerken dikkat etmeniz gereken her şeyi, kurulumdan gelişmiş metrik toplama senaryolarına kadar ele alacağım.
Neden Zabbix Agent?
Windows sunucularını izlemenin birden fazla yolu var. WMI üzerinden agentsız izleme yapabilirsiniz, SNMP kullanabilirsiniz ya da doğrudan Zabbix Agent kurabilirsiniz. Peki neden agent?
Agentsız WMI izlemesi cazip görünse de pratikte ciddi sorunlar çıkarır. WMI sorguları ağ üzerinden çalıştırıldığında hem yavaştır hem de Windows Firewall ile domain politikaları sizi defalarca engeller. SNMP ise Windows’ta varsayılan olarak devre dışıdır ve kurulumu ayrı bir efor gerektirir.
Zabbix Agent ise doğrudan sunucu üzerinde çalışır, düşük kaynak tüketir ve çok daha fazla metriğe erişim sağlar. Disk I/O, process bazlı izleme, Windows servis durumu, event log takibi gibi konularda agent olmadan güvenilir veri toplamak gerçekten zorlaşır.
Kurulum Öncesi Hazırlık
Kuruluma geçmeden önce birkaç şeyi netleştirmek gerekiyor.
Hangi agent versiyonunu kullanmalısınız?
Zabbix Agent 1 (klasik agent) ile Zabbix Agent 2 arasında bir seçim yapmanız gerekecek. Agent 2, Go ile yeniden yazılmış ve çok daha aktif geliştirilen versiyondur. Plugin desteği var, paralel kontrol yapabiliyor ve genel olarak daha stabil davranıyor. Yeni kurulumlar için Agent 2’yi tercih etmenizi öneririm.
Zabbix Server ile versiyon uyumu:
Agent versiyonunuzun Zabbix Server versiyonunuzla uyumlu olduğundan emin olun. Zabbix genel olarak geriye dönük uyumluluk sağlasa da büyük versiyon atlamalarında sorun yaşayabilirsiniz.
Firewall ve ağ gereksinimleri:
- Zabbix Server’ın Windows sunucuya erişimi için TCP 10050 portu açık olmalı (aktif mod için bu yeterli)
- Pasif modda Zabbix Server’dan gelen bağlantılara izin verilmeli
- Aktif modda ise Windows agent Zabbix Server’ın TCP 10051 portuna bağlanır
Çoğu kurumsal ortamda aktif mod tercih edilir çünkü güvenlik ekipleri gelen bağlantı kurallarını açmakta genellikle direnir.
Windows’a Zabbix Agent 2 Kurulumu
MSI ile Kurulum
Zabbix’in resmi sitesinden Windows için MSI paketini indirin. Komut satırından kurulum yapmak, toplu dağıtım senaryolarında çok daha pratiktir:
msiexec /i zabbix_agent2-6.4.0-windows-amd64-openssl.msi /quiet ^
SERVER=192.168.1.100 ^
SERVERACTIVE=192.168.1.100 ^
HOSTNAME=web-server-01 ^
LISTENPORT=10050 ^
ENABLEPATH=1
Bu komut agent’ı sessiz modda kurar ve temel parametreleri ayarlar. ENABLEPATH=1 parametresi, agent’ın sistem PATH’ine eklenmesini sağlar.
Konfigürasyon Dosyası
Kurulum sonrası konfigurasyon dosyası genellikle C:Program FilesZabbix Agent 2zabbix_agent2.conf konumunda bulunur. Temel bir konfigürasyon şöyle görünür:
# Zabbix Agent 2 - Windows Temel Konfigürasyon
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=web-server-01
# Log ayarları
LogFile=C:Program FilesZabbix Agent 2zabbix_agent2.log
LogFileSize=10
DebugLevel=3
# Performans
Timeout=10
MaxLinesPerSecond=20
# Buffer
BufferSend=5
BufferSize=100
# Include - özel kontroller için
Include=C:Program FilesZabbix Agent 2zabbix_agent2.d*.conf
Servisi Başlatma ve Doğrulama
# PowerShell ile servis kontrolü
Start-Service -Name "Zabbix Agent 2"
Get-Service -Name "Zabbix Agent 2"
# Servisin otomatik başlamasını ayarla
Set-Service -Name "Zabbix Agent 2" -StartupType Automatic
Agent’ın düzgün çalışıp çalışmadığını test etmek için Zabbix Server tarafından aşağıdaki komutu çalıştırabilirsiniz:
# Zabbix Server üzerinden agent bağlantı testi
zabbix_get -s 192.168.1.50 -p 10050 -k "agent.version"
# Örnek çıktı: 6.4.0
Windows’a Özel İzleme Metrikleri
Windows Servis İzleme
Windows ortamlarının en kritik gereksinimlerinden biri servis izlemedir. IIS, SQL Server, Exchange gibi servislerin anlık durumunu takip etmek zorunluluktur.
Zabbix’te Windows servis izlemek için service.info key’i kullanılır:
# Belirli bir servisin durumunu sorgula
service.info[W3SVC,state]
# Tüm servisleri listele (discovery için)
service.discovery
Zabbix Server arayüzünden bir item oluştururken şu key formatlarını kullanabilirsiniz:
- service.info[servisAdı,state]: Servisin çalışma durumunu döner (0=çalışıyor, 1-7 arası farklı durumlar)
- service.info[servisAdı,displayname]: Servisin görünen adını döner
- service.info[servisAdı,startup]: Başlangıç tipini döner (auto, manual, disabled)
Windows Event Log İzleme
Event Log izleme, Windows ortamlarında güvenlik ve operasyonel olayları yakalamak için kritiktir. Ancak bu konu çoğu Zabbix kullanıcısının yeterince kullanmadığı bir alan.
# Security event log - başarısız oturum açma denemeleri
eventlog[Security,,"Failure Audit",,"4625"]
# Application event log - uygulama hataları
eventlog[Application,,"Error",,]
# System log - kritik sistem olayları
eventlog[System,,"Critical",,]
Event log item’larını konfigürasyon dosyasına eklerken dikkat etmeniz gereken nokta: bu item’lar aktif agent modu gerektirir. Pasif modda event log izleme çalışmaz.
Performans Sayaçları ile Detaylı İzleme
Windows Performance Counters, işletim sisteminin derinliklerine inmenizi sağlar. Zabbix’te perf_counter ve perf_counter_en key’lerini kullanarak bu sayaçlara erişebilirsiniz:
# CPU kullanımı (İngilizce sistem için)
perf_counter_en["Processor(_Total)% Processor Time"]
# Disk okuma/yazma hızı
perf_counter_en["PhysicalDisk(_Total)Disk Read Bytes/sec"]
perf_counter_en["PhysicalDisk(_Total)Disk Write Bytes/sec"]
# Ağ arayüzü trafiği
perf_counter_en["Network Interface(Intel[R] Gigabit ET Dual Port Server Adapter)Bytes Received/sec"]
# IIS aktif bağlantı sayısı
perf_counter_en["Web Service(_Total)Current Connections"]
Önemli bir not: Türkçe Windows sistemlerde perf_counter key’i Türkçe sayaç isimlerini, perf_counter_en ise İngilizce karşılıklarını kullanır. Kurumsal ortamlarda genellikle İngilizce Windows tercih edildiğinden perf_counter_en daha taşınabilir bir seçenektir.
Özel UserParameter ile İzleme Genişletme
Bazen hazır key’ler yeterli olmaz. Özel bir uygulamanın durumunu, lisans dosyasının geçerlilik tarihini ya da kuruma özel bir metriği izlemeniz gerekebilir. İşte burada UserParameter devreye girer.
Örnek: IIS Application Pool Durumu
# zabbix_agent2.diis.conf dosyasına ekleyin
UserParameter=iis.apppool.state[*],powershell -NoProfile -Command "Import-Module WebAdministration; (Get-WebConfiguration /system.applicationHost/applicationPools/add[@name='$1']).state"
Bu parametreyi Zabbix’te kullanırken key olarak iis.apppool.state[DefaultAppPool] şeklinde çağırırsınız.
Örnek: Windows Lisans Durumu
UserParameter=windows.license.status,powershell -NoProfile -Command "(Get-WmiObject SoftwareLicensingProduct | Where-Object {$_.PartialProductKey}).LicenseStatus"
Örnek: Belirli Bir Portu Dinleyen Process Kontrolü
UserParameter=port.process[*],powershell -NoProfile -Command "$conn = Get-NetTCPConnection -LocalPort $1 -ErrorAction SilentlyContinue; if($conn){(Get-Process -Id $conn[0].OwningProcess).Name}else{'none'}"
UserParameter’larla çalışırken dikkat edilmesi gereken birkaç nokta var:
- PowerShell komutları bazen beklenenden uzun sürebilir,
Timeoutdeğerini yeterince yüksek tutun - Komut çıktısı tek satır ve tutarlı formatta olmalı
- Hata durumlarını her zaman ele alın, boş çıktı Zabbix tarafında “not supported” olarak işaretlenir
Active Directory ve Domain Ortamı İçin Özel Ayarlar
Kurumsal Windows ortamlarının büyük çoğunluğu Active Directory üzerinde çalışır. Bu durum Zabbix Agent konfigürasyonunda bazı ek adımlar gerektirir.
Servis Hesabı ile Çalıştırma
Zabbix Agent varsayılan olarak LocalSystem hesabıyla çalışır. Bu hesabın bazı metriklere (özellikle WMI tabanlı) erişimi kısıtlı olabilir. Domain ortamında özel bir servis hesabı oluşturmanızı öneririm:
# PowerShell ile servis hesabını değiştir
$credential = Get-Credential domainzabbix-svc
$service = Get-WmiObject Win32_Service -filter "Name='Zabbix Agent 2'"
$service.Change($null,$null,$null,$null,$null,$null,
"DOMAINzabbix-svc","P@ssword123",$null,$null,$null)
Restart-Service "Zabbix Agent 2"
Group Policy ile Toplu Konfigürasyon
Onlarca veya yüzlerce Windows sunucusu olan ortamlarda agent’ı tek tek yapılandırmak pratik değildir. Group Policy Object (GPO) ile registry değerlerini merkezi olarak dağıtabilirsiniz:
# Registry üzerinden Zabbix konfigürasyonu
# HKLMSOFTWAREZabbix SIAZabbix Agent 2
# Bu değerleri GPO Preferences > Registry ile dağıtabilirsiniz
reg add "HKLMSOFTWAREZabbix SIAZabbix Agent 2" /v "Server" /t REG_SZ /d "192.168.1.100" /f
reg add "HKLMSOFTWAREZabbix SIAZabbix Agent 2" /v "Hostname" /t REG_SZ /d "%COMPUTERNAME%" /f
Template Kullanımı ve Best Practice
Zabbix’in Windows için hazır template’leri oldukça kapsamlıdır. “Windows by Zabbix agent” template’i temel ihtiyaçların büyük çoğunluğunu karşılar. Ancak bunu olduğu gibi kullanmak yerine klonlayıp ihtiyaçlarınıza göre düzenlemenizi tavsiye ederim.
Template üzerinden şu metriklerin aktif olduğundan emin olun:
- CPU kullanımı ve kuyruk uzunluğu
- Bellek kullanımı (fiziksel ve sanal)
- Disk doluluk oranı (her partition için)
- Disk I/O gecikme süreleri
- Ağ arayüzü istatistikleri
- Windows servis durumları (discovery ile)
- Event log kritik olayları
Disk Discovery Macro Ayarı
Windows sunucularında disk bölümleri sunucudan sunucuya değişir. Low Level Discovery (LLD) kullanarak her sunucudaki partition’ları otomatik keşfedebilirsiniz:
# Discovery key
vfs.fs.discovery
# Item prototype key
vfs.fs.size[{#FSNAME},pfree]
# Trigger prototype
{HOST.NAME}: {#FSNAME} partition - free space below 10%
Template macro’larını sunucu bazında override etmeyi de ihmal etmeyin. Örneğin kritik bir veritabanı sunucusu için disk doluluk eşiğini farklı tutmak isteyebilirsiniz.
Yaygın Sorunlar ve Çözümleri
Agent Bağlanıyor Ama Veri Gelmiyor
Bu sorunun en yaygın nedeni hostname uyumsuzluğudur. Zabbix Server’da kayıtlı host adı ile agent konfigürasyonundaki Hostname değeri birebir eşleşmelidir. Büyük/küçük harf duyarlıdır.
# Agent logunu kontrol et
Get-Content "C:Program FilesZabbix Agent 2zabbix_agent2.log" -Tail 50
# Hostname değerini doğrula
zabbix_agent2 -c "C:Program FilesZabbix Agent 2zabbix_agent2.conf" -t agent.hostname
Performance Counter “Not Supported” Hatası
Özellikle Türkçe Windows sistemlerde perf_counter_en kullandığınızda bazı sayaçlar bulunamazsa:
# Mevcut performance counter'ları listele
typeperf -q | findstr "Processor"
# Belirli bir sayacı test et
typeperf "Processor(_Total)% Processor Time" -sc 1
Event Log Item’ları Çalışmıyor
Event log izleme aktif agent modu gerektirdiğini belirtmiştim. Eğer ServerActive parametresi doğru ayarlanmamışsa item’lar çalışmaz. Bunun yanı sıra Security event log’unu okumak için agent’ın yüksek yetkiyle çalışması gerekebilir:
# Security log için gerekli yetki
# Zabbix servis hesabını "Event Log Readers" grubuna ekle
Add-LocalGroupMember -Group "Event Log Readers" -Member "DOMAINzabbix-svc"
Zabbix Proxy ile Uzak Site Yönetimi
Birden fazla lokasyon veya DMZ’de Windows sunucunuz varsa Zabbix Proxy kullanımı kaçınılmazdır. Proxy senaryosunda agent konfigürasyonu şu şekilde değişir:
# Zabbix Proxy kullanıldığında konfigürasyon
Server=192.168.2.10 # Proxy IP adresi
ServerActive=192.168.2.10 # Proxy IP adresi
# NOT: Server ve ServerActive değerleri Proxy'yi göstermeli,
# doğrudan Zabbix Server'ı değil
Zabbix Server arayüzünde host tanımlarken “Monitored by proxy” seçeneğini doğru proxy ile eşleştirmeyi unutmayın.
İzleme Otomasyonu için PowerShell Scripti
Birden fazla Windows sunucusuna Zabbix Agent kurmak ve konfigüre etmek için kullanabileceğiniz bir PowerShell scripti:
# deploy-zabbix-agent.ps1
param(
[string]$ZabbixServer = "192.168.1.100",
[string]$InstallerPath = "\fileserverdeployzabbix_agent2.msi",
[string[]]$TargetServers
)
foreach ($server in $TargetServers) {
Write-Host "Agent kuruluyor: $server"
$installArgs = @(
"/i", $InstallerPath,
"/quiet",
"SERVER=$ZabbixServer",
"SERVERACTIVE=$ZabbixServer",
"HOSTNAME=$server",
"LISTENPORT=10050"
)
Invoke-Command -ComputerName $server -ScriptBlock {
param($args, $installer)
Start-Process msiexec.exe -ArgumentList $args -Wait
Start-Service "Zabbix Agent 2"
Set-Service "Zabbix Agent 2" -StartupType Automatic
} -ArgumentList $installArgs, $InstallerPath
Write-Host "$server kurulumu tamamlandi."
}
Bu scripti SCCM veya Ansible ile birlikte kullanarak kurulum sürecini tamamen otomatik hale getirebilirsiniz.
Güvenlik Konuları
Windows ortamlarında Zabbix Agent güvenliğini göz ardı etmeyin:
AllowKeyveDenyKeydirektiflerini kullanarak agent’ın cevaplayabileceği key’leri kısıtlayınTLSConnectveTLSAcceptparametreleriyle agent-server iletişimini şifreleyin- UserParameter scriptlerinde kullanıcı girdilerini her zaman validate edin, command injection açıklarına dikkat edin
- Agent servis hesabının sadece gerekli minimum yetkiye sahip olduğundan emin olun
# TLS PSK konfigürasyonu
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=windows-agent-01
TLSPSKFile=C:Program FilesZabbix Agent 2zabbix_agent2.psk
PSK dosyasını oluşturmak için Zabbix Server tarafında:
# 256-bit PSK anahtarı oluştur
openssl rand -hex 32 > /etc/zabbix/zabbix_agent2.psk
cat /etc/zabbix/zabbix_agent2.psk
Sonuç
Windows sunucularını Zabbix ile izlemek, doğru kurulum ve konfigürasyonla son derece güçlü bir izleme altyapısı oluşturmanızı sağlar. Bu yazıda ele aldığımız konuları özetlersek: kurulum ve temel konfigürasyon, Windows’a özel metrikler (servis izleme, event log, performans sayaçları), UserParameter ile özelleştirme, domain ortamı gereksinimleri ve güvenlik konuları.
En çok karşılaştığım hatalardan biri, template’leri kutudan çıktığı gibi uygulamak ve her sunucu için aynı eşik değerlerini kullanmaktır. Her sunucu farklıdır; bir web sunucusundaki %80 CPU kullanımı alarm gerektirirken, bir batch işleme sunucusunda bu normal olabilir. Template’lerinizi iş gereksinimlerinize göre özelleştirmek, gereksiz alarm yorgunluğunu engeller ve gerçekten önemli olan olaylara odaklanmanızı sağlar.
Zabbix’in Windows desteği her yeni versiyonla güçlenmeye devam ediyor. Agent 2 ile gelen plugin mimarisi, özellikle MSSQL ve IIS izleme konusunda çok daha native bir deneyim sunuyor. Eğer hala eski agent kullanıyorsanız, migration planınızı bugün yapmaya başlayın.
