Zabbix- 服务监控- 端口自动发现

2019-06-02 13:03:37 浏览数 (1)

比较实用针对基础服务运行状态检测,自动端口发现加入监控与告警,稍作修改

脚本

python port_discover.py

代码语言:javascript复制
#!/usr/bin/python
# -*- coding: utf-8 -*-

# 使用python2 commands模块

import re
import commands
import json

DROP_LIST = ['22','25','111']
# 排除端口

def filterList():
    DROP_str = "|".join(DROP_LIST)
    CMD="sudo netstat -pntl | awk '{print $4,$7}'|grep  [0-9] |egrep -vw '%s'" % (DROP_str)
    Result_Str = commands.getoutput(CMD)
    #print (Result_Str)
    tmp_list = Result_Str.split("n") #每行加入列表
    new_dict = {}
    for line in tmp_list:
       # print (line)
       PORT_REG = re.search(r"(127.0.0.1:|:::|0.0.0.0:)(d ). d /(S )",line)
       if PORT_REG is not None:
           match_line =  (PORT_REG.groups())
           new_dict[ match_line[-1]]  =  match_line[-2]
    return new_dict

if __name__ == "__main__":
    Results = filterList()

    #格式化成适合zabbix lld的json数据
    ports = []
    for key  in  Results:
        ports  = [{'{#PNAME}':key,'{#PPORT}':Results[key]}]
    print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

返回zabbix数据格式

代码语言:javascript复制
{
    "data":[
        {
            "{#PNAME}":"zabbix_proxy",
            "{#PPORT}":"10051"
        },
        {
            "{#PNAME}":"mysqld",
            "{#PPORT}":"3306"
        }
    ]
}

0 人点赞