Zabbix自动监控Windows端口

Windows服务端有需要监控的端口,主要监控处于LISTEN状态、协议为TCP的端口。

脚本

首先编写脚本,脚本名为discovertcpport.bat,脚本内容如下

1
2
3
4
5
6
7
@echo off
echo {
echo "data":[
for /F "tokens=2 delims= " %%i IN ('netstat -anp tcp^|find /i "LISTENING"') DO for /F "tokens=2 delims=:" %%j IN ("%%i") DO echo {"{#LISTEN_PORT}":"%%j"},
echo {"{#LISTEN_PORT}":"10050"}
echo ]
echo }

脚本说明:
命令netstat -anp tcp ^|find /i "LISTENING"用来查看监听状态的TCP端口;for /F “tokens=2 delims= “表示循环输出的截取值,即每行以空格(delims=)分隔的第2段(token=2)值,以变量%%i输出;之后以同样的循环截取出端口号并格式化输出结果;这里的输出格式必须按JSON对象格式输出,否则报错“Value should be a JSON object”;特别要注意最后一行没有逗号,因此单独添加一行

1
echo {"{#LISTEN_PORT}":"10050"}

来结束,以满足JSON对象格式。

配置文件

客户端的zabbix_agentd.conf中添加以下内容:

1
2
UnsafeUserParameters=1
UserParameter=tcpportlisten,C:\zabbix_agents_3.0.10.win\discovertcpport.bat

说明:
一条表示允许使用用户自定义参数,第二条设置用户参数,名称tcpportlisten是自定义的KEY名,后接KEY要执行的命令或脚本文件。

重新启动zabbix agentd服务

1
2
C:\zabbix_agents_3.0.10.win\bin\win64\zabbix_agentd.exe -c C:\zabbix_agents_3.0.10.win\conf\zabbix_agentd.win.conf -x
C:\zabbix_agents_3.0.10.win\bin\win64\zabbix_agentd.exe -c C:\zabbix_agents_3.0.10.win\conf\zabbix_agentd.win.conf -s

server端

从server端尝试获取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# /data/zabbix/bin/zabbix_get -s 172.16.92.251 -k Port_Low_Discovery
{
"data":[
{"{#LISTEN_PORT}":"22"},
{"{#LISTEN_PORT}":"80"},
{"{#LISTEN_PORT}":"135"},
{"{#LISTEN_PORT}":"443"},
{"{#LISTEN_PORT}":"445"},
{"{#LISTEN_PORT}":"593"},
{"{#LISTEN_PORT}":"3388"},
{"{#LISTEN_PORT}":"3389"},
{"{#LISTEN_PORT}":"5504"},
{"{#LISTEN_PORT}":"8122"},
{"{#LISTEN_PORT}":"10050"},
{"{#LISTEN_PORT}":"28000"},
{"{#LISTEN_PORT}":"28001"},
{"{#LISTEN_PORT}":"47001"},
{"{#LISTEN_PORT}":"49152"},
{"{#LISTEN_PORT}":"49153"},
{"{#LISTEN_PORT}":"49154"},
{"{#LISTEN_PORT}":"49155"},
{"{#LISTEN_PORT}":"139"},
{"{#LISTEN_PORT}":"10050"}
]
}

可以看到获取了很多端口,这些端口有些是我们要监控的服务的端口,有些是系统主服务的端口,所以我们要过滤我们需要监控的端口。
在zabbixserver的web界面去配置正则表达式。
正则表达式如下图所示
Alt text
可以换个理解方式,只有在正则表达式中填写的端口号,zabbix才能去discovery。
接下来配置模板和自发现准则,如下图所示
Alt text
下图为配置使用正则表达式来过滤获取到的端口
Alt text
Item prototypes配置如下
Alt text
Trigger prototypes配置如下
Alt text

{Template OS Windows Port:net.tcp.listen[{#LISTEN_PORT}].count(#3,0,"eq")}=3

表示三次获取信息为0即触发报警,Item prototypes配置时间为30秒,即90秒没有回应触发报警。
这样配置是为了防止zabbixserver端和agent端通讯质量不好。

本文标题:Zabbix自动监控Windows端口

文章作者:Francis

原始链接:http://www.cnops.com/posts/a0ec7c04.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。