最近一直在研究Zabbix監控Windows機器,涉及到如何快速安裝agent,如何修改和完善windows監控模板等等。想把自己的經驗給大家分享一下,希望對大家有所幫助。
1)安裝agent客戶端
首先分享一下用bat寫的自動化安裝Windows機器的agentd安裝腳本,腳本里面的tcp.time_wait和tcp.est分別統計服務器TCP TIME_WAIT和ESTABLISHED的連接數。
@echo off color fd cd \ #IP from Zabbix Server or proxy where data should be send to. Set zabbix_server_ip=IP echo Creating zabbix install dir mkdir c:\zabbix mkdir c:\zabbix\conf mkdir c:\zabbix\bin mkdir c:\zabbix\log mkdir c:\zabbix\install_file echo Copying Zabbix install file xcopy \\共享服務器IP\Share\zabbix_agents_2.2.1.win c:\zabbix\install_file /s copy /y C:\zabbix\install_file\conf\zabbix_agentd.win.conf C:\zabbix\conf\ echo Modiy zabbix configuration files echo LogFile=c:\zabbix\log\zabbix_agentd.log >> C:\zabbix\conf\zabbix_agentd.win.conf echo Server=%zabbix_server_ip% >> C:\zabbix\conf\zabbix_agentd.win.conf echo Hostname=%COMPUTERNAME% >> C:\zabbix\conf\zabbix_agentd.win.conf echo StartAgents=10 >> C:\zabbix\conf\zabbix_agentd.win.conf echo Timeout=30 >> C:\zabbix\conf\zabbix_agentd.win.conf echo UserParameter=tcp.time_wait,netstat -an |find /C "TIME_WAIT" >> C:\zabbix\conf\zabbix_agentd.win.conf echo UserParameter=tcp.est,netstat -an |find /C "ESTABLISHED" >> C:\zabbix\conf\zabbix_agentd.win.conf echo echo Copy zabbix start-up file if %processor_architecture% EQU x86 copy /y C:\zabbix\install_file\bin\win32 C:\zabbix\bin\ if %processor_architecture% EQU AMD64 copy /y C:\zabbix\install_file\bin\win64 C:\zabbix\bin\ echo start zabbix servic C:\zabbix\bin\zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.win.conf echo start zabbix services net start "Zabbix Agent" echo set zabbix service auto sc config "Zabbix Agent" start= auto echo Zabbix agentd Configuration and Install Successful
如果監控Winows機器有上百臺,用上面的腳本安裝agent效率是提升了很多,但還是不夠理想,下面給大家分享一個小工具(http://technet.microsoft.com/en-us/Sysinternals/bb897553.aspx)。
PsExec工具類似於Telnet,並且不需要在遠程訪問服務器上面安裝客戶端軟件即可執行安裝程序,批量執行安裝腳本,絕對不比Shell腳本遜色。下面看看其用法:
Usage: psexec [\\computer[,computer2[,...] | @file]][-u user [-p psswd][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments] 只需知道以下幾個參數即可: @file PsExec遠程安裝agent主機列表,如IP地址,主機名。 -u 指定用於登錄遠程計算機的用戶名。 -p 指定用戶名的密碼。 -c 指定的程序複製到遠程系統來執行,即安裝腳本。
實例:
PsExec.exe @ComputerList.txt -u "sfzhang" –c zabbix_agentd_install_windows.bat
2)獲取監控性能指標
Zabbix監控windows常見的KEY可以參考官方文檔(https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/zabbix_agent/win_keys):
其中最常用的KEY是perf_counter[counter,<interval>],可以獲取windows性能監視器的數據。Windows性能監視器的數據可以通過typeperf獲取,可以把所有的性能監視器裏數據重定向到文本文件裏面查看typeperf -qx > win2003_Performance.txt。下面是獲取windows CPU使用率。
定義監控項的Key:
定義觸發器trigger,5分鐘之內如果CPU使用率大於85%則報警。
3)性能指標的展示
CPU利用率,CPU和disk Idle time。
4)Zabbix監控windows網卡流量,zabbix 監控windows網卡流是監控所有接口的流量。
使用Zabbix Macro能解決監控本地網卡的需求。其中IPADDRESS就是Zabbix Macro,表示被監控機的IP地址,用下面Key即可取到進出流量。
net.if.in[{IPADDRESS},bytes]
net.if.out[{IPADDRESS},bytes]
5)其它性能指標:
物理磁盤的讀響應時間:perf_counter["\PhysicalDisk(_Total)\Avg. Disk sec/Read"]
物理磁盤的寫響應時間:perf_counter["\PhysicalDisk(_Total)\Avg. Disk sec/Write"]
內存的使用百分率:vm.memory.size[pused]
CPU負載:system.cpu.load[all,avg1]
總結:Zabbix自帶監控Windows機器模板裏面監控指標很少,很多指標需要優化,並且需要通過Windows性能監視器獲取數據,無論是系統層面(負載,內存利用率等)還是應用層面(IIS,SQLserver等)的指標都可以獲取到。