Zabbix ile VMware vSphere İzleme Entegrasyonu

Üretim ortamında yüzlerce sanal makineyi yönetirken izleme altyapısının ne kadar kritik olduğunu iyi bilen biri olarak şunu söyleyeyim: vSphere ortamını Zabbix ile entegre etmek, başta biraz uğraştırıcı görünse de bir kez doğru kurduğunuzda size inanılmaz bir görünürlük sağlıyor. Bu yazıda adım adım gerçek bir üretim ortamını düşünerek bu entegrasyonu nasıl yapacağınızı anlatacağım.

Neden Zabbix ve vSphere Entegrasyonu?

vCenter kendi başına yeterli bir izleme aracı gibi görünebilir. Ama şunu düşünün: hem fiziksel sunucularınız, hem Linux/Windows hostlarınız, hem network ekipmanlarınız, hem de vSphere altyapınız için ayrı ayrı konsol mu açacaksınız? Zabbix, tüm bu katmanları tek çatı altında toplar. Üstelik vSphere için özel geliştirilen şablon seti, VMware API’si üzerinden doğrudan vCenter ile konuşur. Agent kurmanıza gerek yok, guest OS’a dokunmanıza gerek yok.

Bir başka kritik nokta: VMware’in kendi alarm sistemi anlık uyarılar için işe yarasa da tarihsel veri saklama ve trend analizi konusunda oldukça kısıtlı kalıyor. 6 ay önce hangi datastore’un ne kadar dolu olduğunu merak ettiğinizde vCenter size cevap veremez, Zabbix verir.

Ön Gereksinimler ve Mimari

Kuruluma geçmeden önce mimariyi kafanızda oturtmanız lazım. Zabbix’in vSphere entegrasyonu VMware monitoring modülü üzerinden çalışır. Bu modül, Zabbix Server ya da Zabbix Proxy üzerinde çalışan bir polling mekanizmasıdır. Direkt olarak VMware API (vSphere Web Services API) üzerinden vCenter’a bağlanır.

Bileşenler şöyle sıralanabilir:

  • Zabbix Server veya Proxy: VMware modülü etkin olmalı
  • vCenter Server: API erişimi açık olmalı (genellikle 443/TCP)
  • Read-only servis hesabı: vCenter’da özel izinlerle tanımlanmış
  • Zabbix Frontend: Şablonları import edip host tanımlamaları yapacağınız yer

Küçük bir not: Büyük ortamlarda (500+ VM) vCenter polling işlemini Zabbix Proxy’e devretmenizi öneririm. Proxy, Zabbix Server’ın yükünü ciddi ölçüde azaltır.

vCenter’da Servis Hesabı Oluşturma

Güvenlik açısından en iyi pratik, Zabbix için minimum yetkili ayrı bir servis hesabı oluşturmaktır. vCenter’a admin hesabıyla giriş yapıp yeni bir kullanıcı ve özel rol tanımlayın.

Powercli ile bu işlemi otomatize edebilirsiniz:

# PowerCLI ile vCenter'a bağlanma
Connect-VIServer -Server vcenter.sirketiniz.com -User [email protected] -Password 'AdminPass'

# Zabbix için özel rol oluşturma
New-VIRole -Name "ZabbixMonitoring" -Privilege (Get-VIPrivilege | Where-Object {
    $_.Id -match "System.Anonymous|System.View|System.Read|
    Global.Settings|VirtualMachine.State.RemoteSnapshot|
    VirtualMachine.Interact.ConsoleInteract|
    Host.Config.NetService|Datastore.Browse"
})

# Kullanıcıya rolü atama
New-VIPermission -Entity (Get-Folder "Datacenters") -Principal "vsphere.localzabbix-monitor" -Role "ZabbixMonitoring" -Propagate $true

Minimum gerekli izinler şunlardır:

  • System.Anonymous, System.Read, System.View: Temel okuma izinleri
  • Global.Settings: Genel ayarları okuma
  • VirtualMachine.State: VM durumlarını görme
  • Host.Config.NetService: Host network servislerini görme
  • Datastore.Browse: Datastore içeriğini tarama
  • Performance.ModifyIntervals: Performans verilerini okuma (bazı vCenter versiyonlarında gerekli)

Zabbix Sunucusunda VMware Modülünü Aktif Etme

Zabbix Server’ın VMware desteğiyle derlenmiş olması gerekiyor. Paket yöneticisinden kurduysanız bu genellikle zaten gelir, ama kontrol edin:

# Zabbix'in VMware desteğiyle derlenip derlenmediğini kontrol etme
zabbix_server --version | grep -i vmware

# Alternatif olarak
strings /usr/sbin/zabbix_server | grep -i vmware

Şimdi Zabbix Server konfigürasyonunu düzenliyoruz:

# /etc/zabbix/zabbix_server.conf dosyasını düzenleme
sudo vim /etc/zabbix/zabbix_server.conf

# Şu parametreleri bulun ve düzenleyin:
# StartVMwareCollectors=2
# VMwareCacheSize=256M
# VMwareFrequency=60
# VMwarePerfFrequency=60
# VMwareTimeout=10

Parametrelerin anlamı:

  • StartVMwareCollectors: Kaç adet VMware collector process başlatılacağı. Her vCenter için en az 1 collector gerekir
  • VMwareCacheSize: VMware verilerinin bellekte tutulacağı alan. Büyük ortamlarda 512M veya daha fazlası gerekebilir
  • VMwareFrequency: vCenter’dan envanter ve durum verilerinin kaç saniyede bir alınacağı
  • VMwarePerfFrequency: Performans metriklerinin kaç saniyede bir sorgulanacağı
  • VMwareTimeout: API isteklerinin timeout süresi

Değişikliklerden sonra servisi yeniden başlatın:

sudo systemctl restart zabbix-server
sudo systemctl status zabbix-server

# Log dosyasını kontrol edin
tail -f /var/log/zabbix/zabbix_server.log | grep -i vmware

Zabbix Frontend’de VMware Host Tanımlama

Bu adım biraz kafa karıştırıcı gelebilir. vCenter’ı Zabbix’e “host” olarak ekliyorsunuz, ama bu host aslında bir API endpoint. Fiziksel bir makineye ya da VM’e agent kurmuyorsunuz.

Frontend üzerinden Configuration > Hosts > Create Host kısmına gidin:

Host name: vcenter-prod (anlamlı bir isim koyun) Groups: VMware (yeni grup oluşturabilirsiniz) Interfaces: Agent interface ekleyin, IP kısmına vCenter IP’sini yazın, port 10050 olsun (bu interface aslında kullanılmayacak ama zorunlu)

Asıl kritik kısım Macros sekmesi. Şu makroları tanımlamanız gerekiyor:

  • {$VMWARE.URL}: https://vcenter.sirketiniz.com/sdk
  • {$VMWARE.USERNAME}: vsphere.localzabbix-monitor
  • {$VMWARE.PASSWORD}: (servis hesabı şifresi)

Bunları Zabbix frontend yerine komut satırından da yapabilirsiniz, özellikle infrastructure-as-code yaklaşımı benimsiyorsanız:

# Zabbix API üzerinden host oluşturma ve macro tanımlama
curl -s -X POST https://zabbix.sirketiniz.com/api_jsonrpc.php 
  -H 'Content-Type: application/json' 
  -d '{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
      "host": "vcenter-prod",
      "interfaces": [{
        "type": 1,
        "main": 1,
        "useip": 1,
        "ip": "192.168.1.10",
        "dns": "",
        "port": "10050"
      }],
      "groups": [{"groupid": "YOUR_GROUP_ID"}],
      "macros": [
        {"macro": "{$VMWARE.URL}", "value": "https://vcenter.sirketiniz.com/sdk"},
        {"macro": "{$VMWARE.USERNAME}", "value": "vsphere.local\zabbix-monitor"},
        {"macro": "{$VMWARE.PASSWORD}", "value": "SifrenizBurada", "type": 1}
      ]
    },
    "auth": "YOUR_AUTH_TOKEN",
    "id": 1
  }'

Macro type 1 şifreli (secret) anlamına gelir, şifreyi bu şekilde saklayın.

VMware Şablonlarını Import Etme ve Uygulama

Zabbix 6.0 ve üzeri sürümler, VMware şablonlarıyla birlikte gelir. Genellikle şu şablonlar mevcuttur:

  • VMware: Ana şablon, discovery kurallarını içerir
  • VMware Guest: Sanal makine metrikleri için
  • VMware Hypervisor: ESXi host metrikleri için

Bu şablonları Configuration > Templates altında bulabilirsiniz. Eğer yoksa Zabbix GitHub reposundan indirebilirsiniz:

# Şablonları Zabbix GitHub'dan indirme
wget https://raw.githubusercontent.com/zabbix/zabbix/6.4/templates/app/vmware/template_app_vmware.yaml

# Zabbix API ile import etme
curl -s -X POST https://zabbix.sirketiniz.com/api_jsonrpc.php 
  -H 'Content-Type: application/json' 
  -d @- << 'EOF'
{
  "jsonrpc": "2.0",
  "method": "configuration.import",
  "params": {
    "format": "yaml",
    "rules": {
      "templates": {"createMissing": true, "updateExisting": true},
      "items": {"createMissing": true, "updateExisting": true},
      "triggers": {"createMissing": true, "updateExisting": true},
      "discoveryRules": {"createMissing": true, "updateExisting": true}
    },
    "source": "YAML_ICERIGI_BURAYA"
  },
  "auth": "YOUR_AUTH_TOKEN",
  "id": 1
}
EOF

Ana vCenter host’una VMware şablonunu uygulayın. Bu şablon, discovery kuralları sayesinde ESXi hostları ve VM’leri otomatik olarak Zabbix’e ekler. Her keşfedilen ESXi host için VMware Hypervisor şablonu, her VM için VMware Guest şablonu otomatik atanır. Bu low-level discovery (LLD) mekanizmasının büyüsü.

Discovery Kurallarını Anlama ve Özelleştirme

Varsayılan discovery ayarları çoğu ortam için yeterlidir, ama bazı durumlarda filter eklemek isteyebilirsiniz. Örneğin sadece belirli bir datacenter ya da cluster’daki VM’leri izlemek istiyorsanız:

# Discovery filter için Zabbix API kullanımı
# Örnek: Sadece "Production" etiketiyle başlayan VM'leri keşfet
curl -s -X POST https://zabbix.sirketiniz.com/api_jsonrpc.php 
  -H 'Content-Type: application/json' 
  -d '{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
      "itemid": "DISCOVERY_RULE_ID",
      "filter": {
        "evaltype": 1,
        "conditions": [{
          "macro": "{#VM.NAME}",
          "value": "^prod-",
          "operator": 8
        }]
      }
    },
    "auth": "YOUR_AUTH_TOKEN",
    "id": 1
  }'

Discovery intervali de önemli. Varsayılan olarak genellikle 1 saat ayarlıdır, yani yeni bir VM oluşturduktan sonra Zabbix’te görünmesi 1 saate kadar sürebilir. Test ortamlarında bunu 5-10 dakikaya indirmek mantıklı, üretimde saatte bir yeterlidir.

Özel Metrikler ve Alarm Kuralları

Varsayılan şablonlar çok kapsamlı, ama üretim ortamında birkaç kritik alarm mutlaka özelleştirmeniz gerekir. Ben genellikle şu senaryolara özel trigger’lar oluştururum:

Datastore doluluk alarmı: %85 doluluğa ulaşınca warning, %90’a ulaşınca critical.

VM snapshot yaşı: 7 günden eski snapshot varsa uyarı ver. Bu çok önemli, snapshot’lar zamanla büyüyerek performansı mahveder.

ESXi host bağlantı durumu: Host vCenter’dan koptuğunda anında bildirim.

# Zabbix API ile özel trigger oluşturma örneği
# Datastore %90 doluluk trigger
curl -s -X POST https://zabbix.sirketiniz.com/api_jsonrpc.php 
  -H 'Content-Type: application/json' 
  -d '{
    "jsonrpc": "2.0",
    "method": "trigger.create",
    "params": {
      "description": "VMware: Datastore {#DATASTORE} kritik doluluk seviyesi",
      "expression": "last(/vcenter-prod/vmware.datastore.size[{$VMWARE.URL},{#DATASTORE},pfree])<10",
      "priority": 4,
      "manual_close": 0,
      "tags": [
        {"tag": "component", "value": "storage"},
        {"tag": "scope", "value": "capacity"}
      ]
    },
    "auth": "YOUR_AUTH_TOKEN",
    "id": 1
  }'

Üretim Ortamından Gerçek Bir Senaryo

Geçen yıl karşılaştığımız bir durumu paylaşayım: 200 VM’lik bir üretim ortamında bir ESXi host’unun memory ballooning değerleri gece 02.00’de anormal yükselmeye başlamıştı. vCenter alarm sistemi bunu yakalamıştı ama neden olduğunu anlayabilmek için Zabbix’e baktık. Zabbix, saatlik performans trendlerini tuttuğu için gece 22.00’den itibaren hafızanın yavaş yavaş şişmeye başladığını, saat 01.30’da bir VM’nin memory kullanımının aniden 3 katına çıktığını net olarak gösterdi.

Zabbix’teki grafikleri vCenter event log’larıyla karşılaştırdığımızda bir toplu iş (batch job) çalıştırmasının tetikleyici olduğunu bulduk. Bu analizi sadece vCenter üzerinden yapmak saatler sürerdi. Zabbix’in tarihsel veri ve grafik altyapısı sayesinde 20 dakikada root cause’a ulaştık.

Benzer durumları Zabbix’te raporlamak için özel dashboard kullanmak işleri çok kolaylaştırır:

# VMware ortamı için dashboard widget konfigürasyonu (Zabbix 6.x API)
curl -s -X POST https://zabbix.sirketiniz.com/api_jsonrpc.php 
  -H 'Content-Type: application/json' 
  -d '{
    "jsonrpc": "2.0",
    "method": "dashboard.create",
    "params": {
      "name": "VMware Genel Durum",
      "display_period": 30,
      "auto_start": 1,
      "pages": [{
        "name": "Genel Bakis",
        "widgets": [{
          "type": "problems",
          "name": "VMware Aktif Problemler",
          "x": 0, "y": 0, "width": 12, "height": 5,
          "fields": [
            {"type": 2, "name": "groupids", "value": "VMWARE_GROUP_ID"},
            {"type": 0, "name": "show_suppressed", "value": "0"}
          ]
        }]
      }]
    },
    "auth": "YOUR_AUTH_TOKEN",
    "id": 1
  }'

Sık Karşılaşılan Sorunlar ve Çözümleri

vCenter’a bağlanamıyor: İlk kontrol edeceğiniz şey SSL sertifikası. Zabbix, self-signed sertifikaya sahip vCenter’a bağlanmakta sorun çıkarabilir. zabbix_server.conf içinde TLSConnect=no_peer_cert ayarını deneyin ya da vCenter sertifikasını Zabbix sunucusunun trust store’una ekleyin.

# vCenter SSL sertifikasını trust store'a ekleme
echo | openssl s_client -connect vcenter.sirketiniz.com:443 2>/dev/null | 
  openssl x509 > /tmp/vcenter.crt

sudo cp /tmp/vcenter.crt /usr/local/share/ca-certificates/vcenter.crt
sudo update-ca-certificates

# Zabbix servisini yeniden başlatma
sudo systemctl restart zabbix-server

VMware cache boyutu yetersiz: Log dosyasında not enough shared memory for VMware cache hatası görüyorsanız, VMwareCacheSize değerini artırmanız gerekiyor. 200+ VM için 512M, 500+ VM için 1G önerilir.

Performans metriği eksik: Bazı ESXi versiyonlarında belirli performance counter’lar varsayılan olarak devre dışıdır. vCenter’da Administration > vCenter Server Settings > Statistics kısmından statistics level’ı 2’ye çıkarmanız gerekebilir. Dikkatli olun, level 4 ciddi performans ve disk alanı sorununa yol açabilir.

Discovery çalışmıyor: Zabbix log’unda Cannot obtain VMware hypervisor gibi hatalar görüyorsanız, servis hesabının izinlerini tekrar kontrol edin. Özellikle propagate seçeneğinin aktif olduğundan emin olun.

Ölçeklendirme ve Büyük Ortamlar

500 VM’den büyük ortamlarda Zabbix Proxy kullanmak neredeyse zorunlu hale gelir. Proxy kurulumu için:

# Proxy'de vmware konfigürasyonu
sudo vim /etc/zabbix/zabbix_proxy.conf

# Şu parametreleri ekleyin/düzenleyin:
# StartVMwareCollectors=3
# VMwareCacheSize=1G
# VMwareFrequency=60
# VMwarePerfFrequency=300
# VMwareTimeout=15

Büyük ortamlarda VMwarePerfFrequency değerini 300 saniyeye (5 dakika) çıkarmak makul. Her 60 saniyede bir tüm VM’lerin performans verilerini çekmeye çalışmak hem vCenter API’sini yorar hem de Zabbix’e ciddi yük bindirir.

Ayrıca büyük ortamlarda proxy grubu kullanımı, yüksek erişilebilirlik açısından önem taşır. İki Zabbix Proxy’yi aynı proxy grubuna alarak aktif-pasif bir yapı kurabilirsiniz. Zabbix 6.4 ile gelen bu özellik, proxy’nin düşmesi durumunda otomatik failover sağlar.

Sonuç

Zabbix ile vSphere entegrasyonu, doğru yapılandırıldığında sanal altyapınız üzerinde inanılmaz bir görünürlük kazandırır. Başlangıçta birkaç saatlik kurulum ve yapılandırma süreci gerektirir, ama uzun vadede bu yatırım kendini defalarca geri öder. Özellikle kapasiteye planlama, incident response sürelerini kısaltma ve “geçen ay bu datastore ne kadardı?” gibi sorulara anında cevap verme konularında fark yaratır.

Bu yazıda anlattığım adımlar bir başlangıç noktasıdır. Her ortam farklıdır ve zamanla kendi özel ihtiyaçlarınıza göre şablonları ve alarm kurallarını zenginleştireceksiniz. En önemli tavsiyem: Önce izlemeye, sonra alarm kurallarına odaklanın. Boğazınıza kadar false positive alarm içinde boğulmaktansa az ama doğru alarm almak her zaman daha değerlidir.

Son olarak, Zabbix şablonlarını ve konfigürasyonu Git gibi bir versiyon kontrol sisteminde tutmayı ihmal etmeyin. Bir gün Zabbix veritabanınız çökerse ya da sıfırdan kurulum yapmanız gerekirse, bu alışkanlık sizi günler sürecek bir kurtarma operasyonundan kurtarabilir.

Bir yanıt yazın

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