首先是写脚本,输出当前机器监听的tcp端口

portscan.py

zabbix用户启动的,默认不能执行netstat -p   chmod +s /bin/netstat或者不用或者sudo

#!/usr/bin/env python
import os
import json

data = {}
tcp_list = []
port_list = []
command = '''netstat -ntl | awk '{print $4}' | grep 0.0.0.0 | awk -F":" '{print $2}' '''
line = os.popen(command).readlines()

for port in line:
    port_dict = {}
    port = port.replace('\n','')
    if int(port) > 20000:
        continue
    port_dict['{#TCP_PORT}'] = port.replace('\n','')
    tcp_list.append(port_dict)

data['data'] = tcp_list
jsonStr = json.dumps(data, sort_keys=True, indent=4)
print jsonStr
这个脚本运行的结果如下:

{
    "data": [
        {
            "{#TCP_PORT}": "843"
        }, 
        {
            "{#TCP_PORT}": "3035"
        }, 
        {
            "{#TCP_PORT}": "10050"
        }
    ]
}
修改win下zabbix_agent的配置文件zabbix_agentd.conf

UnsafeUserParameters=1
UserParameter=tcpportlisten,python /etc/zabbix/portscan.py
修改完成后重启zabbix_agent服务。
这个时候在zabbix_server端就可以用zabbix_get来测试是否正常。
zabbix_get -s ip -k tcpportlisten
返回的结果和在agent上运行脚本返回的结果一致就表示正常。

在页面添加discover

在模版或者主机的页面上点击Discovery(探索),然后在右上角点击Create discovery rule(创建探索规则)
zabbix利用discovery批量添加端口监控 - 第1张  | ㄨ销声匿迹、Linux
然后在这个新建的tcp port discover里面建立一个Item
zabbix利用discovery批量添加端口监控 - 第2张  | ㄨ销声匿迹、Linux

最后创建报警的trigger
zabbix利用discovery批量添加端口监控 - 第3张  | ㄨ销声匿迹、Linux

注意这个地方的表达式

{Template OS Linux:net.tcp.listen[{#TCP_PORT}].count(#3,0,eq)}>1
如果你是在单个机器上添加的,这里Template OS Linux就应该是某个机器的具体名称,如果是模版,这里就是模版的名称

.count(#3,0,eq)}>1
表示最后三次的值等于0,触发次数大于一次则报警

results matching ""

    No results matching ""