最近一直在研究Zabbix监控Windows机器,涉及到如何快速安装agent,如何修改和完善windows监控模板等等。想把自己的经验给大家分享一下,希望对大家有所帮助。

1)安装agent客户端
  首先分享一下用bat写的自动化安装Windows机器的agentd安装脚本,脚本里面的tcp.time_wait和tcp.est分别统计服务器TCP TIME_WAIT和ESTABLISHED的连接数。

@echo offcolor fdcd \#IP from Zabbix Server or proxy where data should be send to.Set zabbix_server_ip=IPecho Creating zabbix install dirmkdir c:\zabbixmkdir c:\zabbix\confmkdir c:\zabbix\binmkdir c:\zabbix\logmkdir c:\zabbix\install_fileecho Copying Zabbix install filexcopy \\共享服务器IP\Share\zabbix_agents_2.2.1.win c:\zabbix\install_file /scopy /y C:\zabbix\install_file\conf\zabbix_agentd.win.conf C:\zabbix\conf\echo Modiy zabbix configuration filesecho LogFile=c:\zabbix\log\zabbix_agentd.log >> C:\zabbix\conf\zabbix_agentd.win.confecho Server=%zabbix_server_ip% >> C:\zabbix\conf\zabbix_agentd.win.confecho Hostname=%COMPUTERNAME% >> C:\zabbix\conf\zabbix_agentd.win.confecho StartAgents=10 >> C:\zabbix\conf\zabbix_agentd.win.confecho Timeout=30 >> C:\zabbix\conf\zabbix_agentd.win.confecho UserParameter=tcp.time_wait,netstat -an |find /C "TIME_WAIT" >> C:\zabbix\conf\zabbix_agentd.win.confecho UserParameter=tcp.est,netstat -an |find /C "ESTABLISHED" >> C:\zabbix\conf\zabbix_agentd.win.confecho echo Copy zabbix start-up  fileif %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 servicC:\zabbix\bin\zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.win.confecho start zabbix servicesnet start "Zabbix Agent"echo set  zabbix service autosc config "Zabbix Agent" start= autoecho  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][-
][-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等)的指标都可以获取到。