1zabbix自定义监控Windows服务器的原理

Zabbix为Windows服务器的监控提供了PerfCounter(性能计数器)这个功能。Zabbix客户端通过PerfCounter获取Windows服务器上的相关性能信息,然后发送给服务器端。

2、如何获取Windows服务器的PerfCounter表达式

方法一:

在Windows服务器的控制面板->管理工具->性能的系统监视器中,可以看到这些性能监控。

zabbix监控Windows sever zabbix监控windows显卡_Network

点击添加计数器后,在弹出的添加计数器对话框中,可以在性能对象下拉菜单中选择相应的监控项目,然后在下面的列表中选择需要使用的计数器,在右边的里表中选择范例。点击添加。

zabbix监控Windows sever zabbix监控windows显卡_Network_02

添加后的计数器在下面列表中可以看到

zabbix监控Windows sever zabbix监控windows显卡_服务器_03

在添加的计数器上面右键选择属性,在弹出的窗口中的数据选项卡中可以看到具体的perfCounter表达式

zabbix监控Windows sever zabbix监控windows显卡_服务器_04

方法二:

进 入开始->运行,输入CMD进入命令窗口。输入typeperf –qx| more 获取相关PerfCounter表达式。也可以配合管道输出给find,查找想要的相关表达式。以获取网卡PerfCounter为例,在命令行输 入:typeperf –qx |find “Network Interface”|find /V “LoopBack”

zabbix监控Windows sever zabbix监控windows显卡_服务器_05

命令的意思是,查找和“Network Interface”相关的PerfCounter。/V是忽略和”LoopBack”回环接口的PerfCounter

3、在zabbix中使用PerfcounterWindows模板添加监控项

在zabbix中,使用PerfCounter的方法有两种:

方法一:

在模板添加监控项时使用perf_counter作为key表达式:

以添加CPU空闲时间监控为例:

系统配置->模板,选择Windows监控模板。进入监控项,点击右上角的Create Item,创建监控项,在key中添加PerfCounter相关的参数,然后在设置一下其他选项,保存即可。

zabbix监控Windows sever zabbix监控windows显卡_服务器_06

方法二:

在客户端配置文件zabbix_agentd.conf文件中添加类似于Parameter自定义监控的PerfCounter参数。具体使用格式如下

PerfCounter=<监控项key表达式>,<性能计数器名称>

以添加网卡监控为例:

修改Windows服务器上的zabbix客户端配置文件zabbix_agentd.conf,添加通过typeperf-qx命令获取的和网卡相关信息

#Network
PerfCounter=NetAllInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Total/sec",30
PerfCounter=NetInInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Received/sec",30
PerfCounter=NetOutInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Sent/sec",30
PerfCounter=NetBandInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Current Bandwidth",30

4.15.2 Windows服务器网卡流量监控

方法一:

windows的key的关键字可以使用网卡的ip地址来替代。例如:net.if.out[192.168.101.1,bytes]

方法二:

如果更改了ip地址,上面的方法就不灵了。使用Macro能比较好的解决监控本地网卡的需求net.if.out[{IPADDRESS},bytes]

方法三:

Macro 中的{IPADDRESS}只是获取主机的外网IP地址,对于多网卡的主机来说内网网卡就监控不到了。在客户端配置文件中使用PerfCounter可以 解决这个问题。但每个机器的网卡型号不一定相同,因此typeperf的输出也不一样。我写了个perl脚本,来解决这个问题。

use strict;
use warnings;
#添加对网卡的监控
my @network=`typeperf -qx |find "Network Interface"|find /V "Loopback"|find "Bytes Total"`;
my $i=0;
foreach my $int (@network)
{
if($int=~ /^(\\Network Interface.*\\).*$/)
{
my $intname=($1);
open OUT_FILE, ">>c:\\zabbix\\zabbix_agentd.conf" or die("Could not write the file");
print OUT_FILE <<EOF;
#Network
PerfCounter=NetAllInt${i},"${intname}Bytes Total/sec",30
PerfCounter=NetInInt${i},"${intname}Bytes Received/sec",30
PerfCounter=NetOutInt${i},"${intname}Bytes Sent/sec",30
PerfCounter=NetBandInt${i},"${intname}Current Bandwidth",30
EOF
close(OUT_FILE);
$i++;
}

}

不同的windows服务器只要运行这个脚本,就可以根据服务器上网卡型号还有网卡数量,将监控写入到zabbix_agentd.conf配置文件中。