zoukankan      html  css  js  c++  java
  • Zabbix如何实现批量监控端口状态

    引言

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      在监控生产环境的服务的时候,通常需要对多个端口进行监控,如果我们手动一个一个的添加,这将是一件很麻烦的事情,为了减少这样的情况,我们采用批量添加监控端口的方法,这是

    非常常见的需求,zabbix也是支持这种方式的,需要使用zabbix的Discovery功能来实现,下面小编就给大家分享一下批量添加对口的占用。

      使用Zabbix监控如何监控服务器端口状态,大概的流程:zabbix监控服务自带端口监控的监控项,所以需要我们自己手动定义所监控的item,客户端获取的端口列表通过agent传送到服务端,

    只需在服务端进行端口监控模板配置,然后自定义监控图形,添加监控项即可!

       下面就来给大家分享一下批量添加端口的方法!

    第一:自动扫描端口并监控报警

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    1.编写脚本扫描端口

    vim check_port.py

    #!/usr/bin/env python

    import os

    import json

    portlist = []

    new_port_list = []

    port_dict = {"data":None}

    cmd = '''netstat -tnlp|egrep -i "$1"|awk {'print $4'}|'''

    cmd += '''awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort -n| uniq 2>/dev/null'''

    auto_localport = os.popen(cmd).readlines()

    for ports in auto_localport:

    new_port = ports.strip()

    portlist.append(new_port)

    for port in portlist:

    pdict = {}

    pdict["{#TCP_PORT}"] = port

    new_port_list.append(pdict)

    port_dict["data"] = new_port_list

    jsonStr = json.dumps(port_dict,sort_keys=True,indent=4)

    #python3

    #print(jsonStr)

    #python2

    print jsonStr

    脚本的作用就是从被监控的服务器上面采集数据,并且转换为特定的字典格式,这种格式是zabbix可以识别的一种数据字典格式,使用python来编写相对shell来说更加便捷。

    将脚本放在客户端 /usr/lib/zabbix/alertscripts 路径下面

    2.修改被监控端的zabbix_agent.conf配置文件

    UnsafeUserParameters=1

    UserParameter=tcpportlisten,/usr/lib/zabbix/alertscripts/check_port.sh

    重启客户端服务

    3.服务端测试

    执行命令:zabbix_get -s 192.168.92.9 -p 10050 -k tcpportlisten

    出现上面格式的数据,说明脚本编写成功!!!

    第二:页面配置

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    1.添加模板

    2.添加自动发现规则

    在上新创建的模板中点击-->自动发现规则-->然后选择创建发现规则

    说明:上面的key 一定要和配置文件中的key 保持一致。就是我们在zabbix_agent.conf文件中添加的两行代码中的第二行中添加的参数key

    3.创建监控项原型

    上面中的键值 中的 #TCP_PORT} 和我们的脚本 check_port.sh 中的参数一致

    4.创建触发器类型

    添加按钮进入-->选择原型

    注意这里的表态示count(#3,0,eq) > 1表示最近3次的返回值为0,这个条件触发一次则报警.

    配置到这我们就完成了,zabbix自动扫描并监控的功能.

    第三:批量添加指定端口

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    有时候我们不需要监控自动扫描出来的所有的端口,这些端口需要我们指定,这个需求也是比较常见的,有了上面的基础,实现这个东西其实是比较简单,其实仔细看看脚本就能实现。

    要实现这个功能我们只需要,将脚本替换成下面内容即可:

    #!/usr/bin/env python

    import json

    port_list = ["80",

         "10050",

         "3306",

         "22",

         "8080"]

    new_port = []

    port_dict = {"data":None}

    for port in port_list:

    pdict = {}

    pdict["{#TCP_PORT}"] = port

    new_port.append(pdict)

    port_dict["data"] = new_port

    jsonStr = json.dumps(port_dict,sort_keys=True,indent=4)

    #python3

    #print(jsonStr)

    #python2

    print jsonStr

    我们只需要在port_list中添加想要监控的端口号即可!注意格式,以逗号隔开!

  • 相关阅读:
    NodeJs使用Mysql模块实现事务处理
    Javascript(JS)对Cookie的读取、删除、写入操作帮助方法
    SLERP 导数
    General matrix representations for B-splines 论文理解
    搭建私人实体编译服务器
    A Micro Lie Theory 论文理解
    [备忘,无新意] undistort (求反函数对某个值的映射)使用迭代优化方法
    Dual Quaternion representing Rigid Transformation
    B 样条曲线的 SE(3) 应用
    [ceres-solver] From QuaternionParameterization to LocalParameterization
  • 原文地址:https://www.cnblogs.com/JeremyWYL/p/8328081.html
Copyright © 2011-2022 走看看