最近一直在研究Zabbix监控Windows机器,涉及到如何快速安装agent,如何修改和完善windows监控模板等等。想把自己的经验给大家分享一下,希望对大家有所帮助。
1)安装agent客户端
首先分享一下我写的自动化安装Windows机器的agentd安装脚本zabbix_agentd_install_windows.bat。
@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\confecho 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 echo Copy zabbix start-up file if %processor_architecture% EQU x86 copy /y C:\zabbix\install_file\bin\win32 C:\zabbix\binif %processor_architecture% EQU AMD64 copy /y C:\zabbix\install_file\bin\win64 C:\zabbix\binecho 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机器有上百台,用上面的安装脚本安装效率是提升了很多,但还是不够理想,下面给大家分享一个小工具(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远程执行主机列表,如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等)的指标都可以获取到。