Zabbix实现自动发现端口并监控

桃扇骨 2022-03-16 08:52 515阅读 0赞

1、新建客户端需要的脚本

# vim discovertcpport.sh

  1. #!/bin/bash
  2. portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
  3. length=${#portarray[@]}
  4. printf "{\n"
  5. printf '\t'"\"data\":["
  6. for ((i=0;i<$length;i++))
  7. do
  8. printf '\n\t\t{'
  9. printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
  10. if [ $i -lt $[$length-1] ];then
  11. printf ','
  12. fi
  13. done
  14. printf "\n\t]\n"
  15. printf "}\n"
  16. 2、客户端增加discoverykey

UserParameter=tcpportlisten,/usr/local/zabbix_agent/sbin/discovertcpport.sh “$1”

3、重启zabbix_agentd服务

# /etc/init.d/zabbix_agentd restart

4 、服务端测试

  1. # /usr/local/zabbix/bin/zabbix_get -s 192.168.0.111 -k tcpportlisten
  2. {
  3. "data":[
  4. {"{#TCP_PORT}":"10050"},
  5. {"{#TCP_PORT}":"22"},
  6. {"{#TCP_PORT}":"80"}
  7. ]
  8. }

返回类似以上内容即为正常

5、在Linux模板中创建端口自动发现规则

632106-20170629104551383-81094534.png

然后创建项目原型

632106-20170629104945258-977739215.png

此处要确实注意端口变量{#TCP_PORT}名称要与上面脚本中的保持一致。

再创建触发器原型

632106-20170629105322243-413980350.png

到此,监控端口已经完成。

-———————————————————————————

可能遇到的问题:

1 、 执行脚本的时候发现提示 Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) 应该是没权限的意思,

2 、添加完自动发现规则之后,提示 Value should be a JSON object 这个错误

解决办法是 vim /etc/sudoers

#Defaults requiretty 注释掉这个

zabbix ALL=(ALL) NOPASSWD: ALL 添加此行

然后在上面的脚本里面加上sudo netstat -tnlp|egrep -i “$1”|awk {‘print $4’}|awk -F’:’ ‘{if ($NF~/^[0-9]*$/) print $NF}‘|sort|uniq

-—————————————————————-

附:tomcat端口监控脚本

  1. #!/bin/bash
  2. sudo netstat -tnlp|grep "java"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq >/tmp/tomcat
  3. portarray=(`sudo grep "^$1$" /tmp/tomcat`)
  4. length=${#portarray[@]}
  5. printf "{\n"
  6. printf '\t'"\"data\":["
  7. for ((i=0;i<$length;i++))
  8. do
  9. printf '\n\t\t{'
  10. printf "\"{#TOMCAT_PORT80}\":\"${portarray[$i]}\"}"
  11. if [ $i -lt $[$length-1] ];then
  12. printf ','
  13. fi
  14. done
  15. printf "\n\t]\n"
  16. printf "}\n"

UserParameter=tomcat_port8080[*],/etc/zabbix/monitor_scripts/discover_tomcat8080.sh $1

# zabbix_get -s 172.17.213.62 -k tomcat_port8080[8080]

{
“data”:[
{“{#TOMCAT_PORT8081}“:”8081”}
]
}

发表评论

表情:
评论列表 (有 0 条评论,515人围观)

还没有评论,来说两句吧...

相关阅读