Zabbix监控指定端口

本文介绍了两种在Zabbix中实现端口监控的方法。第一种是通过编写shell脚本`port_alert.sh`和配置文件`port.conf`,结合Zabbix Agent的UserParameter实现端口自动发现。第二种方法是在Zabbix Server端直接配置监控项,使用`net.tcp.service`键值进行端口监控。文章详细阐述了每种方法的配置步骤,并展示了测试成功的输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这里介绍两种方式监听端口

        1、第一种方式是通过脚本实现

        2、第二种方式通过zabbix自带键值实现

主机名

ip

操作系统

zabbix版本

zabbix-server

192.168.26.143

CentOS 7.5

4.0 LTS

zabbix-agent

192.168.26.141

CentOS 7.5

4.0 LTS

1.脚本编写

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

[root@zabbix-agent ~]# cd /etc/zabbix/script/
[root@zabbix-agent script]# more port_alert.sh 
#/bin/bash
CONFIG_FILE=/etc/zabbix/script/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

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

[root@zabbix-agent script]# more port.conf
22
80
50
3306  
8080
10050
10051
 3822
21
9100

注意两个脚本属主为zabbix:zabbix。

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

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

[root@zabbix-agent ~]# view /etc/zabbix/zabbix_agentd.conf
UserParameter=port.alert,/etc/zabbix/script/port_alert.sh

重启agentzabbix服务

[root@zabbix-agent ~]# systemctl restart zabbix-agent 

3.server端测试

[root@zabbix-server ~]# zabbix_get -s 192.168.26.141 -k port.alert
{
        "data":[
                {"{#TCP_PORT}":"22"},
                {"{#TCP_PORT}":"80"},
                {"{#TCP_PORT}":"50"},
                {"{#TCP_PORT}":"3306"},
                {"{#TCP_PORT}":"8080"},
                {"{#TCP_PORT}":"10050"},
                {"{#TCP_PORT}":"10051"},
                {"{#TCP_PORT}":"3822"},
                {"{#TCP_PORT}":"21"},
                {"{#TCP_PORT}":"9100"}
        ]
}

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

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

新建模板:

 Port Alert

  新建自动发现规则:

自动发现清单中新建监控项原型:

  

{#TCP_PORT} 端口

net.tcp.listen[{#TCP_PORT}]

port-alert

自动发现清单中新建触发器:

 

添加表达式:

port:{#TCP_PORT} is down,please check

{Port Alert:net.tcp.listen[{#TCP_PORT}].last()}<>1

模板关联主机:

监测中、最新数据、仪表板可以看到最新数据与报警信息,就不一一截图了  

原文链接:https://blog.51cto.com/loong576/2117521

下面介绍第二种方式

配置-主机-监控项-创建监控项

 名称自定义,键值选择:net.tcp.service[service,<ip>,<port>]

 创建新的触发器

 表达式选添加

 表达式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值