zabbix—自动发现端口并监控
自動(dòng)批量檢查agent開(kāi)放的端口
PS:如果服務(wù)器上的應(yīng)用都是固定的,不會(huì)隨機(jī)產(chǎn)生的都可以使用自動(dòng)發(fā)現(xiàn)端口來(lái)監(jiān)控;
?如果服務(wù)器會(huì)隨機(jī)出現(xiàn)端口且每次啟動(dòng)程序都會(huì)改變,可以采用第二種方法,來(lái)監(jiān)控指定的端口
約定
zabbix所有執(zhí)行的腳本統(tǒng)一放置在 /etc/zabbix/scripts 目錄下#cd /etc/zabbix/ #mkdir scripts #chown root:zabbix -R /etc/zabbix/scripts/ #chmod 755 /etc/zabbix/scripts/?zabbix-agent操作
1、腳本內(nèi)容
scripts]# vim discovery.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++))doprintf '\n\t\t{'printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"if [ $i -lt $[$length-1] ];thenprintf ','fidone printf "\n\t]\n" printf "}\n"scripts]#chmod +s /usr/bin/netstat?2、添加key值
cat /etc/zabbix/zabbix_agentd.conf 添加如下內(nèi)容: UnsafeUserParameters=1 UserParameter=tcpportlisten,/etc/zabbix/scripts/discovery.sh?3、重啟agent服務(wù)
#systemctl restart zabbix-agent.service?zabbix-server端操作
# zabbix_get -s 172.18.243.7 -p 10050 -k tcpportlisten {"data": [{"{#TCP_PORT}": "10000"},{"{#TCP_PORT}": "10050"},{"{#TCP_PORT}": "9400"},{"{#TCP_PORT}": "9500"}] }說(shuō)明:由于端口太多,這里只是部分端口
?ps:172.18.243.7 ?#客戶(hù)端IP
tcpportlisten ??# /etc/zabbix/zabbix_agentd.confkey值
Web端的配置
1、創(chuàng)建模板:Template Ports Discovery
2、創(chuàng)建自動(dòng)發(fā)現(xiàn)規(guī)則
?3、創(chuàng)建監(jiān)控項(xiàng)原型
?4、創(chuàng)建圖形原型
?5、創(chuàng)建觸發(fā)器
6、在主機(jī)中關(guān)聯(lián)此模板
7、查看結(jié)果
醬紫就配置完成端口自動(dòng)掃描并監(jiān)控完成了,醬紫就可以通過(guò)監(jiān)控端口實(shí)現(xiàn)監(jiān)控服務(wù)是否正常了<^^>
監(jiān)控指定端口范圍內(nèi)的端口
scripts]#vim discovery.sh#!/usr/bin/python __author__ = 'Yan' import os import jsondata = {} tcp_list = [] port_list = [] t = ['10050','10081','10087','10096','10097','10000','10073','10099','120000','17000','18050','18051','18081','22','28050','3000','32000','5500','80'] tt = [] 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 t:tt.appendinformation for port in list(set(tt)):port_dict = {}port_dict['{#TCP_PORT}'] = porttcp_list.append(port_dict)data['data'] = tcp_list jsonStr = json.dumps(data, sort_keys=True, indent=4) print jsonStr ~ #scripts]#chmod +xdiscovery.sh# /scripts]# ./discovery.sh {"data": [{"{#TCP_PORT}": "80"},{"{#TCP_PORT}": "22"},{"{#TCP_PORT}": "12000"},{"{#TCP_PORT}": "10050"}] }OK!
友情提示:Web端提示Value should be a J.SON object 原因?yàn)閜ython腳本中使用了netstat -p參數(shù),權(quán)限問(wèn)題,zabbix_agentd是zabbix用戶(hù)啟動(dòng)的,默認(rèn)不能執(zhí)行netstat -p等命令,導(dǎo)致從服務(wù)器取到的自動(dòng)發(fā)現(xiàn)腳本為空。 解決辦法: chmod +s /bin/netstat(客戶(hù)端)轉(zhuǎn)載于:https://www.cnblogs.com/yaun1498078591/p/10782253.html
總結(jié)
以上是生活随笔為你收集整理的zabbix—自动发现端口并监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: FixedThreadPool吞掉了异常
- 下一篇: thymeleaf 学习笔记