• Zabbix监控指定端口


    这里介绍两种方式监听端口
    1、第一种方式是通过脚本实现
    2、第二种方式通过zabbix自带键值实现

    第一种方式

    1.脚本编写

    两个脚本,port_alert.sh为端口自发现脚本,port.conf为指定的监控端口号

    # cat /usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/port_alert.sh
    #/bin/bash
    CONFIG_FILE=/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/port.conf
    Check(){
        grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -vE '^ *[0-9]+' &> /dev/null
        if [ $? -eq 0 ]
        then
            echo Error: ${CONFIG_FILE} Contains Invalid Port.
            exit 1
        else
            portarray=($(grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -E '^ *[0-9]+'))
        fi
    }
    PortDiscovery(){
        length=${#portarray[@]}
        printf "{\n"
        printf  '\t'"\"data\":["
        for ((i=0;i<$length;i++))
          do
             printf '\n\t\t{'
             printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
             if [ $i -lt $[$length-1] ];then
                        printf ','
             fi
          done
        printf  "\n\t]\n"
        printf "}\n"
    }
    port(){
        Check
        PortDiscovery
    }
    port
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    创建port.conf,写入要监控的端口号

    # more port.conf
    22
    10050
    
    • 1
    • 2
    • 3

    配置文件port.conf每个端口号一行,每行的被监控端口可以有空格,空行和注释行#会被过滤。

    2.修改被监控端的zabbix_agent.conf配置文件,新增KEY值port.alert

    # cat /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_port_alert.conf
    UserParameter=port.alert,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/port_alert.sh
    
    • 1
    • 2

    3.重启agent端zabbix服务

    /etc/init.d/zabbix_agentd restart
    
    • 1

    4.zabbix_server端测试

    # zabbix_get -s 192.168.2.39 -k 'port.alert'
    {
    	"data":[
    		{"{#TCP_PORT}":"22"},
    		{"{#TCP_PORT}":"10050"}
    	]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试成功,返回json格式的合法端口号

    5.新建模板,创建自动发现规则

    新建模板:名称Linux Template Port Alert
    在这里插入图片描述新建自动发现规则:
    在这里插入图片描述
    自动发现清单中新建监控项原型:
    在这里插入图片描述
    具体配置如下:

    名称:{#TCP_PORT} 端口
    键值:net.tcp.listen[{#TCP_PORT}]
    
    • 1
    • 2

    在这里插入图片描述
    自动发现清单中新建触发器:
    在这里插入图片描述
    具体配置如下
    在这里插入图片描述
    表达式配置

    名称:port:{#TCP_PORT} is down,please check
    问题表现形式:{Linux Template Port Alert:net.tcp.listen[{#TCP_PORT}].last()}<>1
    恢复表达式:{Linux Template Port Alert:net.tcp.listen[{#TCP_PORT}].last()}=1
    
    • 1
    • 2
    • 3

    问题表现形式:
    在这里插入图片描述
    恢复表达式
    在这里插入图片描述
    模板关联主机:
    在这里插入图片描述
    到此,监测中、最新数据、仪表板可以看到最新数据与报警信息

    第二种方式

    配置-主机-监控项-创建监控项
    在这里插入图片描述
    名称自定义,键值选择:net.tcp.service[service,,]
    在这里插入图片描述
    创建新的触发器

    与第一种方式创建一样,这里省略

  • 相关阅读:
    Redisson 实现分布式锁
    基于STM32和人工智能的智能家居监控系统
    [数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北
    Spring Boot接收从前端传过来的数据常用方式以及处理的技巧
    【Android -- 开源库】HelloCharts 的基本使用
    U9二次开发之BP定时任务插件开发
    【自监督论文阅读笔记】Geography-Aware Self-Supervised Learning
    JAVA计算机毕业设计智能化车辆管理综合信息平台Mybatis+源码+数据库+lw文档+系统+调试部署
    Linux操作系统之进程控制
    vue-cli 输出的模板 html 文件使用条件语句
  • 原文地址:https://blog.csdn.net/chj_1224365967/article/details/127693258