快下班了,我故意掐着表,没想到诡异现象再次出现。
倒计时60秒,刹那间办公室里所有人忽然疯狂地工作起来,明明一秒钟之前还有说有笑、有打有闹。
倒计时30秒,老板出现了……
“你……来一下!”
我正诧异着这时间咋就拿捏得这么准,冷不丁这背后传来的喊声差点让我当场跪了。
一回头,只见老板的背影正渐渐远去。
我左看看、右瞧瞧,在场所有人好像都在忙着自己的重要工作。
我指了指自己的鼻子,脑袋嗡嗡作响,赶紧扔下背包,直奔老板办公室……
“老板,您找我有……有什么吩咐?”我一路小跑到门口,差点没刹住。
老板背对着我正欣赏着墙上书有硕大标语的锦旗,上面八个大金字“加班加点,勇于奉献”,让屋子里充满了光。
“你来几年了?”
“回您的话,我也不知道来这儿几年了。呃,只记得在食堂饱饱吃了七次鸡腿饭。”
“嗯……七年了,你也该拿出点真本事了!”老板一边用手巾摩擦着聪明绝顶,一边意味深长的感叹道。
老板转过身来,瞅我有点蒙逼,连忙打开电脑:“最近网络设备总有些不稳定,客户对此也有过抱怨。现在我希望能实时监测这些设备的运行情况。”
“啊,最起码我想要知道,每个无线AP上实时连接有多少客户端,以及整个公司无线连接客户端的总数量。”
“这样,你想个办法,先简单点吧,把这些数量变化转换成实时动态图表,这样看着也直观方便。”
“还有,最近已经花了不少的钱了,也没什么预算,最好不要花什么钱!”
老板每说一句,都是对我小心脏的一次猛击。
看我张着个大嘴眼神迷离,老板一皱眉,厉声说道:“去……帮我找支笔来!”
“啊?什……什么笔?”
“毛笔!马良牌的!”
“啊?这……这神笔马良让我上哪儿找去啊,您说笑了,再说您要那玩意干吗?”
“给我找来,我好给你画饼啊!我可听说了,你小子背地里是不是天天吵吵着要加工资?”
老板一瞪那对小圆眼,嘿,我可算看清楚了,里面还有眼珠子呢!
我只得皮笑肉不笑的咧了咧嘴,没敢接话茬。
“行了!甭废话,这次给你小子这个任务,做好了甭说加工资,给你升职都可以考虑!”
好么,我心说话,这不就是在给我画饼嘛,当我三岁大学刚毕业啊!
话都说到这儿了,我只能假装应承,被迫接下这一大坑任务。
公司使用的是 WLC9800
无线控制器,而设备监控软件使用的是常见的 Zabbix
,版本 6.x
。
这样的话,无非就是将这两者结合起来,实现老板所说的效果呗!
当我真地去完成这个任务时才发现,这哪是什么大坑,这特么就是个不见底的深渊啊!
话说这个 WLC9800
据说是新款,有着各种先进功能,并且管理设置也与以往的网络控制器有很大的区别。
比如将各种配置变成了各种 Tag
,并与之相配的还有各种策略。
总之原来挺简单的配置给搞得复杂了,有点旧瓶装新酒的嫌疑,反正好一通折腾之后才勉强上线。
可是等上线一切OK后才发现,这丫居然没有支持客户端数量和加入的AP数量的 OID
。
解释一下哈,这个 OID
就是 SNMP
监控用的参数标识符,比如我想监测设备是否在线、开机多久等等,它们都有一个特定的数字串,类似于这样 1.3.6.1
。
怎么会不支持呢?
官方堂而皇之地贴出声明,说是目前有 BUG
,就是不支持。
嘿,什么特么破玩意,以前都支持,现在新的反而不支持了,这很难吗?
网上一搜,好么,还真有不少人有这个需求,可愣是没有好的解决办法。
发牢骚是没有用的,得,找找还有没有其他办法吧!
后来摸了半天,寻思着这个控制器本身应该是有这方面的数据的。
于是我看到了这个,当前 AP
的 5G
信号上连接了 16
个客户端。
有门哈,那其他的 AP
我怎么看呢,难道要一个一个点开吗?
很明显,这样做不行,不过至少控制器是肯定有相应统计数据的。
于是乎我就去查了一下获取相关数据的命令,费尽千辛万苦结果还真让我找着了。
通过 SSH
(当然 Telnet
也行)登录获取数据信息的命令。
WLC9800> show ap wlan summary
多啰嗦一句,这条命令可能和其他旧款控制器有所出入,有的命令是写成 show client
这样的。
接着我就看到了命令输出如下面这样一堆数据。
好家伙,够乱的,不过好像有点规律,似乎是排版问题,有点费眼神哈!
好了,多少能看出点名堂了吧?
比如左边圈出来的是 2.4G/5G
信号,右边圈出来的就是当前分别连接的客户端数量了。
看懂了就好办了,接下来就是对这些信息如何加工提取的问题了。
这么乱的数据,怎么加工提取呢?
哎,我们把它放一放,先来添加监控项,后面会具体说。
什么监控项呢?
比如某个时刻一共有几个 AP
在线,一共有多少客户端连在上面,等等。
我们先来整个简单的,就是某个 AP
上连有多少个客户端。
登录到监控软件 Zabbix
,在左侧菜单中找到 数据采集
> 主机
,然后在右侧找到控制器,点击相应的监控项。
点击界面右上角的 创建监控项
。
在所需填写的栏目内写上相应的参数信息。
- 名称:起个好听又好看的名字
- 类型:
SSH
客户端 - 键值:
ssh.run[<unique short description>,<ip>,<port>,<encoding>,<ssh options>]
- 主机接口:无
- 认证方法:密码
- 用户名称:登录
SSH
用户名 - 密码:登录
SSH
密码 - 已执行的脚本:
show ap wlan summary
其中这个键值怎么写呢?
语法格式如下:
ssh.run[<unique short description>,<ip>,<port>,<encoding>,<ssh options>]
可以简单地写成这样:
ssh.run[AP Client Count,192.168.123.123,22]
其中描述 <unique short description>
是一段文字,可以随便写,但不能与其他已有监控项的描述相同。
比如我给写的是:AP Client Count
。
然后就是 IP
地址,外加端口号,默认 22
其实可以不写。
好,这是监控项参数的填写方法,很简单。
接下来主要重点是从输出命令结果中提取对我们有用的数据,因此我们需要添加预定步骤。
这个所谓的预定步骤,就是用来进一步加工获取信息的。
比如本例中的 show ap wlan summary
命令,出来一大堆内容,可我只想要某个 AP
当前连接的客户端数,很显然我是要去筛选这些数据的。
因此我们就回到了前面说的那个问题,怎么筛选数据?
我们先在监控项设定界面中点击 预处理
,然后添加一项。
Zabbix
默认提供了不少预定步骤方法,不过对于这么一堆杂乱无章的内容,简单预设的步骤恐难胜任,因此还是需要用到编程手段。
Zabbix
可以用 JavaScript
作为筛选数据的编程工具。
在选定预定步骤的名称为 JavaScript
后,我们需要在后面的 参数
部分中写上代码。
代码就直接不展示了(写得比较丑),文末有下载,我说说实现的主要原理。
首先,将 show ap wlan summary
命令输出的内容分为标题和数据两大部分,我们只取数据部分。
其次,定位根据 AP
名称、SSID
以及物理信号分类( 2.4G/5G
)等过滤筛选出指定 AP
所连接的客户端数量。
这里多说一句,如果你想计算所有的 AP
一共连了多少客户端,那就是将前面筛选后所有数字相加即可得出总和。
最后写好了代码肯定是要测试一下的,要不怎么知道它转不转得起来呢?
好,点击右侧的 测试
。
在打开的界面中,先要勾选 从主机获取值
,要是不这么做,那么就没有测试用的数据,结果自然就会失败。
接着直接点击 获取值并进行测试
等待测试结果就行了。
我这边得到的测试结果是数字 2
,表示当前指定的 AP
上连接有两个客户端。
如果出错了,那么就根据提示好好看看代码哪里写错了吧!
最终效果,显示当前连接的 AP
数量,以及 2.4G
和 5G
各自连接的客户端总数量。
还有每个 AP
当前连接的客户端数量。
Zabbix监控WLC9800脚本示例代码
ClientCountAllAP-2.4G.txt
- 连接到所有AP
的2.4G
的客户端数量ClientCountAllAP-5G.txt
- 连接到所有AP
的5G
的客户端数量ClientCountPerAP01-2.4G.txt
- 连接到AP01
的2.4G
的客户端数量ClientCountPerAP01-5G.txt
- 连接到AP01
的5G
的客户端数量
下载链接:https://pan.baidu.com/s/1S71DPi8FBisfC5mp0tXR7g
提取码:
★扫码关注公众号, 发送【001038】获取阅读密码
至于其他效果,只要能有效筛选出你想要的数据,那么理论上想要什么效果就都能实现。
不过我想提醒一下小伙伴们,不可过度使用这类方法,因为可能会由于频繁访问设备而导致设备卡顿甚至死机,请务必调节好访问超时等参数。
最后我费了九牛二虎之力,总算把公司里所有的 AP
数据都给筛选了一遍,又都做了实时动态图表效果。
我满心欢喜,心想着这任务完成得嘎嘎漂亮,老板一高兴指定给我不是升职就是加薪!
正当我向老板汇报,说得吐沫横飞的时候,人力资源部的赖经理敲门进来,手里还拿着一份文件。
赖经理瞟了我一眼,动作变得有些犹豫。
老板示意他过会儿开会,将文件先放在一旁桌案上,微笑着让我继续。
趁着老板喝茶的功夫,我凑近用余光仔细这么一瞥,那文件封面标题写着:《关于公司裁员计划方案书》……
将技术融入生活,打造有趣之故事
网管小贾 / sysadm.cc