先把需要用的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自动发现脚本:

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 json
import os
import sys
import subprocess
def discovery():
    CMD_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' '''
    CMD_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 "."'
    ap_id = subprocess.getoutput(CMD_id)
    ap_name = subprocess.getoutput(CMD_name)
   #print(ap_id)
    id_list = ap_id.split("\n") #把AP的id每行数据添加到列表
    name_list = ap_name.split("\n")
    AP_list = list(zip(id_list,name_list))
    ap_dict = {}
    for v in AP_list:
        ap_dict[v[0]] = v[1]
    return ap_dict

#格式化成适合zabbix lld的json数据
if __name__ == "__main__":
    ap_value = discovery()
    ap_list = []
    for key in ap_value:
        ap_list += [{'{#APID}':key,'{#APNAME}':ap_value[key]}]
    #print(ap_list)
    print(json.dumps({'data':ap_list},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


标题:zabbix自动发现华为AC6605管理AP状态以及连接数
作者:cuijianzhe
地址:https://cjzshilong.cn/articles/2019/08/05/1564987766272.html

到头来 我们记住的 不是敌人的攻击 而是朋友的沉默 ---马丁·路德·金


              
取消