27 Ağustos 2013 Salı

Zabbix ile Vmware sunucu takibi

Bu makalede Zabbix ile Vmware sunucunuzu nasıl takip edeceğinizi aktaracağım.

Öncelikle bu makaleyi yazarken yararlandığım adrese bu linkten ulaşabilirsiniz.

Vmware sunucu üzerine doğrudan Zabbix Agent kuramıyoruz. Onun yerine Zabbix sunucumuzun üzerine VMware vSphere™ SDK for Perl modulünü kurarak Vmware makinamızı buradan kontrol edeceğiz.

Başlangıç için SDK'nın size uygun versiyonunu bu linkten indirelim. Ben 64 Bit tar.gz dosyasını indirdim.

İşlemlere başlamadan önce Zabbiz sunucumuzun tüm gncellemelerinin yapılmış olmasına dikkat edelim.

Şimdi Zabbix sunucumuza SSH ile bağlanıp root olalım ve gerekli programları aşağıdaki komutla kuralım.

# apt-get install ia32-libs build-essential gcc uuid uuid-dev perl libssl-dev perl-doc liburi-perl libxml-libxml-perl libcrypt-ssleay-perl

İndirdiğimiz SDK dosyasını Zabbix sunucusunda /var/tmp içine kopyalayalım. Sunucuda /var/tmp dizinine girelim ve aşağıdaki komutla sıkıştırılmış sdk dosyasını açalım.

# tar -zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.gz

Kuruluma başlamadan önce proxy kullanmıyorsanız aşağıdaki komutlarla bunları kapatalım.


# export http_proxy=
# export ftp_proxy=


Daha sonra aşağıdaki komutla kurulumu başlatalım.

# vmware-vsphere-cli-distrib/vmware-install.pl

Kullanım koşullarını kabul ederek devam edelim. Program gerekli modulleri indirip birer birer kuracak. Son olarak size executable dosyaları nereye koymak istediğinizi sorduğunda varsayılan değer kalacak şekilde devam edelim ve kurulumu bitirelim.

Herşeyin çalıştığını test etmek için aşağıdaki komutu kullanabiliriz.

# /usr/lib/vmware-vcli/apps/general/./connect.pl --server IPAdresi --username xxx --password xxx

Bu komut vmware sunucunuza bağlantıyı test edecektir. Her şey yolunda ise aşağıdaki gibi bir çıktı alacaksınız.


Connection Successful
Server Time : 2012-10-23T11:07:35.087573Z


Eğer bu çıktı yerine aşağıdaki gibi bir hata alıyorsanız,

Server version unavailable at 'https://IPAdresi:443/sdk/vimService.wsdl' at /usr/share/perl/5.14/VMware/VICommon.pm line 545.

O zaman scriptinizin başına aşağıdaki satırı eklemelisiniz.

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

Bu eklemeden sonra tekrar denediğinizde sorunsuz çalışması gerekiyor.

Şimdi, SDK kurulumunu yapıp vmware sunucumuza bağlantıyı gerçekleştirdiğimize göre, artık sunucudan veri okumaya başlayabiliriz.

Sunucudan ihtiyacımız olan verileri okuyup bir dosyaya yazan scripti bu linkten indirebilirsiniz. Ben bu dosyayı yazının başında verdiğim linkten aldım ve üzerinde geliştirmeler yaptım.

Bunlardan en önemlisi scripte giriş parametresi olarak port numarası ekledim. Bu sayede dış bacağında tek IP si olup, iç bacakta birden fazla Vmware sunucu kontrol etmeniz gereken işler için farklı portları içeride 443 portuna yönlendirebilirsiniz.

Ayrıca yukarıdaki hatayı ben de aldığım için scriptin başına yazdığım satırı ekledim. Son olarak scripte vmware sunucudaki Free Memory Size ı okuyacağım bir satır ekledim.

İndirdiğiniz zabbix_perl_api_vmware.pl scriptini /etc/zabbix içine kopyalayalım. Bu dosya vmware sunucudaki istediğimiz değerlerini okuyarak /tmp içinde vmware_api_IPAdresi_PortNumarasi.txt isimli  dosyaya yazıyor.

Dosyayı çalıştırmadan önce executable yapalım.

# chmod +x /etc/zabbix/zabbix_perl_api_vmware.pl

Bu dosyanın çalışıp çalışmadığını da aşağıdaki komutla test edebilirsiniz.

# /etc/zabbix/./zabbix_perl_api_vmware.pl IPAdresi PortNo password username

Burada default olarak port numarası 443 tür. Eğer scriptimiz doğru çalışırsa size 0 çıktısı verecek ve tmp altınca vmware_api_IPAdresi_PortNo.txt dosyasını göreceksiniz.

Artık vmware sunucumuzdan verileri okuduk ve bir dosyayay yazdırdık. Dosyadaki verileri Zabbix sunucudan okumadan önce bu scripti zamanlayarak sürekli çalışmasını sağlayalım. bu sayede okuyacağımız veri hep güncel olacaktır. Bunun için cron kullanacağız.

Sunucuda root iken crontab -l yazarsanız varolan zamanlanmış görevleri görebilirsiniz. crontab -e yazarak yeni görev ekleyeceğiz.

crontab -e yazdığınızda ilk kez açıyorsanız size kullanmak istediğiniz editörü soracaktır. Seçim yaptıktan sonra açılan sayfaya aşağıdaki satırları ekleyelim.


MAILTO=""
1 * * * * /etc/zabbix/./zabbix_perl_api_vmware.pl 192.168.2.10 443 password username

crontab işlem yaptığında bize mail atmaya çalışmaması için MAILTO="" yazıyoruz. Yukarıdaki satırda her saat başı 1 geçe bu komut çalışacak ve dosyamıza güncel değerleri yazacak demektir. Bana saatte bir çalışması yeterli geliyor. Buraya istediğiniz kadar vmware sunucunuz için satır ekleyebilirsiniz.


Şimdi sıra bu dosyadan istediğimiz veriyi okuyarak Zabbix Agent aracılığı ile Zabbix sunucumuza göndermek.

Bunun için Zabbix Agent'ın UserParameter özelliğini kullanacağız. Ben örnek olarak 5 parametreyi vereceğim. zabbix_agentd.conf dosyamızın en altına aşağıdaki satırları ekleyelim. (dosyanız /etc/zabbix veya /usr/local/etc altındadır)


UserParameter=VMVolume.Capacity[*],egrep -i "Volume.Capacity_$3:" /tmp/vmware_api_$1_$2.txt|sed 's/.*\t//'
UserParameter=VMVolume.Free[*],egrep -i "Volume.Free_$3:" /tmp/vmware_api_$1_$2.txt|sed 's/.*\t//'
UserParameter=VMUptime[*],egrep -i "Uptime:" /tmp/vmware_api_$1_$2.txt|sed 's/.*\t//'
UserParameter=VMMemSize[*],egrep -i "MemSize:" /tmp/vmware_api_$1_$2.txt|sed 's/.*\t//'
UserParameter=VMMemFree[*],egrep -i "MemFree:" /tmp/vmware_api_$1_$2.txt|sed 's/.*\t//'


Buradan da anlaşıldığı üzere bu 5 parametrede Disk toplam kapasitesi, disk boş bölümü, sunucu uptime, sunucu RAM kapasitesi ve boş RAM kapasitesini okuyoruz.

Bu işlemi yaptıktan sonra zabbix_agentd servisini yeniden başlatmalısınız.

Daha sonra bu parametreleri Zabbix Sunucunuzda okuyabilmek için önce bir Host yaratın ve IP adresi olarak 127.0.0.1 verin. Daha sonra her bir değer için bir Item ekleyin. Aşağıda iki Item için örnek var.

İlk örnekte Total Memory'i okuyorum. Burada birşeye dikkatinizi çekeceğim. Update Interval kısmına 0 yazarak Filexible Interval ekledim. Toplam RAM'i sürekli kontrol etmem gerekmiyor. Çünkü fiziksel olarak RAM eklemediğim sürece bu değişmeyecek. O yüzden haftada sadece bir kere kontrol etmesi bana yetiyor. Haftanın ikinci günü 86400 saniye aralıkla kontrol et diyorum. 86400 rakamı saniye cinsinden bir güne tekabül ediyor. Dolayısıyla sadece salı günü bir kez kontrol edecek anlamına geliyor.

İkinci örnekte ise Toplam Disk kapasitesini kontrol ediyorum. Burada dikkat edeceğimiz şey gönderdiğim parametreler içinde datastore1 olan parametre. Bu Vmware diskimin adıdır. Sizde birden fazla diskte olabilir. Bu isim varsayılan isimdir. Eğer siz başka bir isim verdiyseniz bunu iki yerden kontrol edebilirsiniz. Ya /tmp altında oluşturulan txt dosyaya bakıp görebilirsiniz. Ya da vSphere Client ile bağlanıp sunucunuza tıkladıktan sonra Summary kısmına gelip disk adınızı Storage bölümünden görebilirsiniz.


Hiç yorum yok:

Yorum Gönderme