zabbix 自动发现华为 AC6605 管理 AP 状态以及连接数

本贴最后更新于 1115 天前,其中的信息可能已经东海扬尘

先把需要用的 snmp 的 oid 值获取到手。? 具体的 MIB 文件官网上查找即可:image.png
yum 安装:
zabbix 运行脚本目录:/usr/lib/zabbix/externalscripts
zabbix 配置文件目录:/etc/zabbix/zabbix_agentd.d
本地源码编译安装:
zabbix 运行脚本目录:/usr/local/zabbix/share/zabbix/externalscripts
zabbix 配置文件目录:/usr/local/zabbix/etc/zabbix_agentd.conf.d

一、编写 ap 自动发现脚本:

输出样式:
SNMPv2-SMI::enterprises.2011.6.139.13.3.10.1.5.0 = STRING: "3F-area07-0"

shell 脚本实例:

[root@zabbix /usr/local/zabbix/share/zabbix/externalscripts]# cat apdiscovery.sh 
#!/bin/bash

id=$(snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.5 | cut -f1 -d "=" | cut -f10 -d ".")
id_array=(${id})
sum=$(snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.5 | wc -l) 
name=$(snmpwalk -v 2c -c limi@2018  10.200.250.5 enterprises.2011.6.139.13.3.10.1.5 | awk  '{print $4}' | sed 's/"//g')
name_array=($name)

printf '{\"data\":[ '
for ((i=0;i<$sum;i++))
do 
    printf "{\"{#APID}\":\"${id_array[$i]}\",\"{#APNAME}\":\"${name_array[$i]}\" }"
      
    if [ $i -lt $[ $sum-1 ] ];then
	printf ','
	fi
done
printf " ]}"

python3 脚本实例

#!/bin/env python3

import subprocess
import json

def ApList():
    CMD = "snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.5"
    Result_str = subprocess.getoutput(CMD)
    tmp_list = Result_str.split("\n")
    ap_dict = {}
    for line in tmp_list:
        apName = eval(line.split(':')[3])
        apId = line.split('=')[0].split('.')[9]
        ap_dict[apId] = apName
    return ap_dict
#
if __name__ == "__main__":
    Results = ApList()
    aps = []
    for apinfo in Results:
        aps += [{'{#APID}': apinfo,'{#APNAME}': Results[apinfo]}]
    #格式化成适合zabbix lld的json数据
    print(json.dumps({'data':aps},sort_keys=True,indent=4,separators=(',',':')))

在目录/etc/zabbix/zabbix_agentd.d 里面创建 monitor_wlan.conf 文件

UserParameter=wlan.alive,/usr/local/zabbix/share/zabbix/externalscripts/monitor_wlan.sh

取出 AP-id 和 ap-name
image.png

image.png

AP 状态脚本:(需要把自动发现脚本(apdiscovery)里面的参数 ap-id 传参进来)

[root@zabbix /usr/local/zabbix/share/zabbix/externalscripts]# cat ap_status.sh 
#!/bin/bash
apid=$1
snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.7.${apid} | awk '{print $4}'

AP 连接用户数脚本:

[root@zabbix /usr/local/zabbix/share/zabbix/externalscripts]# cat apuser.sh 
#!/bin/bash
apid=$1
snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.45.${apid} | awk '{print $4}'

例如:

image.png

二、配置 zabbix_agentd 的配置目录里面的脚本关系:

[root@zabbix /usr/local/zabbix/etc/zabbix_agentd.conf.d]# cat discoveryapid.conf 
UserParameter=discovery_apid,/usr/local/zabbix/share/zabbix/externalscripts/apdiscovery.sh
UserParameter=discoveryapuser[*],/usr/local/zabbix/share/zabbix/externalscripts/apuser.sh $1
UserParameter=ap.status[*],/usr/local/zabbix/share/zabbix/externalscripts/ap_status.sh $1

三、zabbix 里面的配置:

  1. 创建一个模板:
    image.png

2.创建自动发现规则:
image.png
里面配置如下:
image.png

3.配置监控项原型:
image.png

image.png

4.设置触发器:
image.png

image.png

  1. 新建主机:
    image.png
    绑定模板:
    image.png

等待几分钟后便可出来结果(AP 上下行速率自动发现同理):
image.png

报警内容:

image.png

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • Zabbix
    40 引用 • 20 回帖
1 操作
cuijianzhe 在 2021-04-07 14:30:26 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 724945469

    这份文章上写的那 5 个脚本还有嘛?这篇文章上好像少贴了几个脚本

    1 回复
  • 没有哦!那个参数是通过 zabbix_agent 传参过去的,是通过 zabbix 自带的配置文件,写上路径把参数传过去的。

    UserParameter=discovery_apid,/usr/local/zabbix/share/zabbix/externalscripts/apdiscovery.sh
    UserParameter=discoveryapuser[*],/usr/local/zabbix/share/zabbix/externalscripts/apuser.sh $1
    UserParameter=ap.status[*],/usr/local/zabbix/share/zabbix/externalscripts/ap_status.sh $1
    
  • haoheshan

    请问楼主,脚本运行的速度很慢,zabbix 超时怎么处理?

    1 回复
  • 脚本运行时间是不是超过 zabbix 采集数据的时间了?如果这样,建议把 zabbix 的采集数据间隔时间适当调整一下