2 window_sport and window_server

在客户端新建discovertcpport.bat文件,放在c:\zabbix\目录中,内容如下:
@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 {"{#TCP_PORT}":"%%j"},
echo {"{#TCP_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”;
特别要注意最后一行没有逗号,因此单独添加一行echo {"{#TCP_PORT}":"10050"}来结束,以满足JSON对象格式。

在客户端的zabbix_agentd.conf中添加以下内容
UnsafeUserParameters=1
UserParameter=tcpportlisten,c:\zabbix\discovertcpport.bat
重新启动zabbix agentd服务

cd到c:\zabbix目录,输入脚本文件名,回车:

服务器测试
/usr/local/zabbix/bin/zabbix_get -s 10.188.1.44 -k tcpportlisten
可以单独创建一个模板,也可以直接在windows模板中创建:
设置端口自动发现规则
使用的KEY就是在客户端配置文件中自定义的tcpportlisten
item name : tcpportlisten
key: tcpportlisten

给自动发现模块创建item原型
name tcp port $1
net.tcp.listen[{#tcp_port}]

data type boolean

给自动发现模块创建触发器
tcp port $1 status

{Template Os Windows:net.tcp.listen[{#tcp_port}].last()}#1

触发器内容
item : template os windows: tcp port{#tcp_port}
last is not n
n: 1


posted @ 2016-12-16 16:57  onlylc  阅读(142)  评论(0)    收藏  举报