快速搞定端口批量监控
一、脚本及配置
1、(文件名:check_port.py)(python2.7版本) 存在路径:/etc/zabbix/zabbix_agentd.d/check_port.py
这个脚本有一部分内容是我从百度上找的,有一部分自己新增的,有一部分改吧改吧,凑合用
#!/usr/bin/python
__author__ = 'Hudaye'
import os
import json
import subprocess
command = "sudo netstat -tnlp|egrep -i tcp|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
output = process.communicate()[0]
ports = output.decode().split()
json_output = json.dumps(ports)
data = {}
tcp_list = []
port_list = []
tt = []
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 json_output:
tt.append(i)
for port in list(set(tt)):
port_dict = {}
port_dict['{#TCP_PORT}'] = port
tcp_list.append(port_dict)
data['data'] = tcp_list
jsonStr = json.dumps(data, sort_keys=True, indent=4)
print(jsonStr)
执行check_port.py脚本因为linux环境各不一样,所以当你在服务端使用:zabbix_get -s 'ip' -p 10050 -k mis-port 命令获取agent端数据时或许会报以下错误:
sudo: sorry, you must have a tty to run sudo
# 1、那就把:sudo netstat -tnlp|egrep -i tcp|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq
# 这一行中的sudo拿掉就行了
# 2、或者不拿掉sudo可以在sudo后面加-t或者-tt
# 两个方法都试下,哪个能用用哪个,再解决不了,就上百度
2、(文件名:ZHJX_Port_Status.conf) zabbix配置文件
1、mis-port键
2、python指令路径:/usr/bin/python
3、文件存在路径:/etc/zabbix/zabbix_agentd.d/
将下面的命令写入ZHJX_Port_Status.conf配置文件中
UserParameter=mis-port,/usr/bin/python /etc/zabbix/zabbix_agentd.d/check_po

本文介绍了如何使用Python脚本`check_port.py`结合ZabbixAgent配置端口批量监控,包括解决脚本执行中的权限问题,配置Zabbix自动发现规则,以及通过`zabbix_Script_Deployment.sh`自动化脚本进行环境部署。通过这些步骤,可以实现对Linux服务器端口状态的实时监控并自动化处理。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



