Zabbix4.0 自动发现TCP端口并监控

java端口很多,每台机器上端口不固定,考虑给机器配置组不同的组挂载模版,相对繁琐。直接使用同一个脚本自动获取机器上java相关的端口,推送到zabbix-server。有服务端口挂了自动推送告警

一、zabbix-agent配置过程

1、用户自定义参

[root@nexus zabbix_agentd.d]# cat /etc/zabbix/zabbix_agentd.d/userparameter_checkport.conf 
# 添加以下内容到配置文件中
UserParameter=tcpport.listen[*], bash /etc/zabbix/zabbix_agentd.d/externalscripts/check_port.sh $1
[root@nexus zabbix_agentd.d]#  cat /etc/zabbix/zabbix_agentd.d/externalscripts/port_discovery.sh 
#!/bin/bash
portarray=(`sudo netstat -tnlp | egrep -i "$1" | awk {'print $4'} | awk -F':' '{if ($NF~/^[0-9]*$/ && $NF != 22 && $NF != 80 && $NF != 10050 && $NF != 3306 ) 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"

2、zabbix_agent修改参数

1、调大延迟

Timeout=30

2、开启远程命令执

UnsafeUserParameters=1

3、给zabbix用户添加sudo权限

使用ansible批量授权zabbix用户执行netstat

3、zabbix-server测试

[root@ops-public ~]# zabbix_get -s 192.168.12.234 -k "tcpportlisten"

5、优化记录

解决方法

chmod u+s /usr/bin/netstat

二、zabbix web配置自动发现模版

1、创建模版

2、配置模版组

3、创建自动发现

4、填写自动发现规则

填写自动发现名称,键值填写与zabbix-agent端配置文件userparameter_checkport.conf 中的tcpportlisten保持一致

5、创建Item prototypes(创建监控项原型)

监控项原型名称:Port:{#TCP_PORT}

键值:net.tcp.listen[{#TCP_PORT}] TCP_PORT与脚本中port_discovery.sh 中的保持一致,键值选择net.tcp.listen[port],把port改成{#TCP_PORT}

6、创建触发器

触发器名称:Port:

默认正常值是1,不等于1时发送告警通知

恢复表达式

7、agent挂载模版查看最新数据

三、优化

计划自动发现端口并匹配到服务名称

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值