介绍
服务器上跑了很多应用,和一些api接口,现在需要把他们全部监控起来,下面介绍通过zabbix对服务器上端口的监控,实现端口挂掉之后,通过zabbix报警通知到运维人员
准备
先准备两台服务器,已经部署好了zabbix-sever和zabbix-agent
服务器 | ip | 系统 |
---|---|---|
zabbix-server | 192.168.1.70 | centos7.2 |
zabbix-agent | 192.168.1.6 | centos7.2 |
zabbix-agent端 添加自定义监控
准备三个文件
port.sh为获取服务器端口的脚本
CONFIG_FILE=/etc/zabbix/zabbix_agentd.d/port
Check(){
grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -vE '^ *[0-9]+' &> /dev/null
if [ $? -eq 0 ]
then
echo Error: ${CONFIG_FILE} Contains Invalid Port.
exit 1
else
portarray=($(grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -E '^ *[0-9]+'))
fi
}
PortDiscovery(){
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"
}
port(){
Check
PortDiscovery
}
port
port 此文件存放需要监控的端口
11883
6379
8080
port.conf
root@weremote-test zabbix_agentd.d]# cat port.conf1
UserParameter=port.alert,/etc/zabbix/zabbix_agentd.d/port.sh
配置好之后重启zabbix-agent端
systemctl restart zabbix-agent
zabbix-server端通过zabbix-get获取数据
[root@localhost ~]# zabbix_get -s 192.168.1.6 -k port.alert
{
"data":[
{"{#TCP_PORT}":"11883"},
{"{#TCP_PORT}":"6379"},
{"{#TCP_PORT}":"8080"}
]
}
可以正常的获取zabbix-agent上的端口信息
去zabbix-sever页面添加监控模板
配置->模板->创建模板,填写对应的信息
配置->模板->端口监控->自动发现规则->创建发现规则
填写与zabbix-agent端配置文件port.conf中的port.alert保持一致
创建监控项原型
{#TCP_PORT}端口
键值:net.tcp.listen[{#TCP_PORT}] TCP_PORT与脚本中port.sh中的保持一致,键值选择net.tcp.listen[port],然后把port改成{#TCP_PORT}
新建触发器
{#TCP_PORT} is down,please check
问题表现形式如下
关联模板
去主机里面,选择模板,链接指示器中,选择端口监控,添加模板
监测->最新数据,就能看到要监控的接口信息了
注:我这个监控的数据端口比较多,在上port文件中 我删除了一些,把要监控的端口都写在port文件中,最新数据中会自动发现port文件中的端口
端口挂了之后报警
钉钉群接受报警信息
到此 已实现zabbix对服务器上端口状态的监控
关注微信公众号,获取更多zabbix监控教程