Zabbix操作手册:自动发现规则并监控应用端口

由于应用场景多样化,而zabbix自带的模板并不能满足各种应用的监控需求,本文则是实现自动发现并监控端口方法,其中脚本文件包括python和shell两个版本,建议采用已实现自定义端口范围python版本。

编写自动发现端口的脚本

将以下脚本保存至zabbix_agent.conf中所配置的目录,并赋予执行权限。Shell版本没有锁定端口范围,可以在创建自动发现规则时添加“过滤器”。

Python版本

vim /opt/zabbix/scripts/check_tcp_ports.py

#!/usr/bin/python

import os
import json

data = {}
tcp_list = []
port_list = []
s = ['8080','8180','8280','8380','8480','8580','8680','8780','8880','8980']
ss = []
command = "netstat -tnlp | egrep -i tcp | awk {'print $4'} | awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}' | sort|uniq"
lines = os.popen(command).readlines()
for line in lines:
    port = line.split()
    port_list.append(port[0])
for i in port_list:
    if i in s:
      ss.append(i)
for port in list(set(ss)):
    port_dict = {}
    port_dict['{#TCP_PORT}'] = port
    tcp_list.append(port_dict)

data['data'] = tcp_list
jsonStr = json.dumps(data, sort_keys=True, indent=4)
print jsonStr

Shell版本

vim /opt/zabbix/scripts/check_tcp_port.sh

#!/bin/bash

portarray=(`netstat -tnlp | egrep -i "$1" | awk {'print $4'} | awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}' | sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
  do
    printf '\n\t\t{'
    printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
    if [ $i -lt $[$length-1] ];then
      printf ','
    fi
  done
printf "\n\t]\n"
printf "}\n"

配置zabbix-agent

修改zabbix_agent.conf,并添加相关参数,保存后重启zabbix-agent。

vim /etc/zabbix/zabbix_agentd.conf
#vim /usr/local/etc/zabbix_agentd.conf

UnsafeUserParameters=1
#UserParameter=check_tcp_port,/opt/zabbix/scripts/check_tcp_port.sh "$1"
UserParameter=check_tcp_port,/opt/zabbix/scripts/check_tcp_ports.py "$1"

测试

在 zabbix-proxy / zabbix-server 执行如下脚本进行测试(请先安装zabbix-get):

zabbix_get -s 10.10.100.101 -k check_tcp_port #该IP是zabbix-agent端

能获取端口数据则表示脚本执行成功,但提示“(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)”,原因是netstat执行权限的问题,在客户端执行如下命令即可:

chmod +s /bin/netstat

创建自动发现并监控端口模板

该过程适合直接上图,图中只列出重要配置,并请根据实际需求进行修改。

创建zabbix模板

创建自动发现规则

创建监控项原形

创建触发器类型

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

感谢您的支持与帮助

支付宝扫一扫打赏

微信扫一扫打赏