zabbix 自动发现监控端口

有些服务器上开启的服务端口非常多  如果一个个添加监控会很繁琐,于是想到了自动发现规则  自动发现服务器上的服务端口并进行监控。

一、配置脚本

1.在被监控的服务器上创建自动发现端口脚本,存放在/etc/zabbix/script:

[root@centos6 script]# vim /etc/zabbix/script/discovery_tcpport.sh

#!/bin/bash
portarray=(`ss -tnlp |awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}

function zabbix_json(){
  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"
}

function check(){
  #ss -tnlp |grep 'users' |awk -F ':' "/:$1/ {print \$NF}" |cut -d',' -f1 |sed 's@[(,"]@@g' |uniq
  ss -tnlp |grep 'users' |awk -F ':' "/:$1/ {print \$NF}" |grep -oE '\".*\"' |sort  |uniq |head -n1 |sed 's/"//g' |awk -F ',' '{print $1}'
}

[[ $1 = check ]] \
  && $* \
  || zabbix_json

[root@centos6 script]# chown zabbix.zabbix discovery_tcpport.sh 

[root@centos6 script]# chmod a+x discovery_tcpport.sh

2.本地测试脚本

[root@centos6 script]# ./discovery_tcpport.sh   
{
        "data":[
                {"{#TCP_PORT}":"10050"},
                {"{#TCP_PORT}":"22"},
                {"{#TCP_PORT}":"3306"},
                {"{#TCP_PORT}":"80"}
        ]
}

二、修改zabbix客户端配置文件,增加参数

1.修改配置文件,增加参数

[root@centos6 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.d/userparameter_sa_linux.conf

UserParameter=discovery.tcpport[*],/etc/zabbix/script/discovery_tcpport.sh $1 $2

2.重启zabbix客户端

[root@centos6 script]# service zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]

 三、服务端测试连通

在zabbix-server端,使用zabbix_get命令来获取agent端的脚本参数:

[root@centos6 ~]# zabbix_get -s 192.168.10.137 -k discovery.tcpport
{
        "data":[
                {"{#TCP_PORT}":"10050"},
                {"{#TCP_PORT}":"22"},
                {"{#TCP_PORT}":"3306"},
                {"{#TCP_PORT}":"80"}
        ]
}

 四、添加自动发现规则

1.创建发现规则

在自建或已有模板中创建自动发现规则:

2.配置发现规则名称

3.配置监控项原型

4.配置触发器

创建完成

五、进行测试

在agent服务器中,用nginx开启新的端口8080服务

[root@centos6 conf.d]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      26909/zabbix_agentd 
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1356/mysqld         
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      11462/nginx         
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      11462/nginx         
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1578/sshd           
tcp        0      0 :::10050                    :::*                        LISTEN      26909/zabbix_agentd 
tcp        0      0 :::22                       :::*                        LISTEN      1578/sshd           

 在监控页面上可以看到新端口已经添加进来并监控了

现在把端口8080关闭,则出现端口断开警告:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值