利用夜莺开源版对H3C无线设备监控

编者荐语:

真正搞监控的人肯定知道 SNMP 水有多深,有时我甚至腹黑猜测,这些厂商是故意的吧,,,指标不标准,格式各异,只能靠一款灵活的采集器了,本文是夜莺社区用户写的文章,转给大家参考。

author: 网络小斐 

关于夜莺SNMP插件

前文说明了利用夜莺开源版如何监控H3C交换机的,算是抛砖引玉;秉持着授人与鱼不如授人与渔,今天我们就来具体谈谈夜莺SNMP插件的使用,能自己自定义自身需求的监控指标才是真正学会如何利用夜莺去监控SNMP协议设备,今天将以H3C无线作为案例,具体讲解下SNMP插件配置。

场景介绍

企业华三无线AP和AC的设备信息监控,需要通过SNMP协议拿到指标数据,并把数据插入到VictoriaMetrics时序数据库中,通过夜莺对数据的即时查询和提取可以构建需要的监控面板,实现基础的数据指标监控提取。

华三无线指标

由于snmp.toml配置文件(路径:categraf/conf/input.snmp/)中已经存在华三交换机的指标配置文件,为了区分多类型设备采集模板,这里将把交换机采集配置模板文件和无线设备采集配置模板文件进行分开,分别取名:snmp_h3c_sw.tomlsnmp_h3c_wireless.toml,配置会同步读取,具体配置如下:

interval = 10# H3C AC信息采集
[[instances]]
agents = ["udp://192.168.100.100",
]interval_times = 3
labels = { region = "beijing", role = "ac" }# 每个请求的超时时间
timeout = "5s"
# SNMP Agent的版本
version = 2
# SNMP团体名
community = "XXXX"
# 自定义 mib 文件路径
# path = ["/usr/share/snmp/mibs"]
# 代理主机标签
agent_host_tag = "ident"
# 尝试的重试次数
retries = 3
# GETBULK 每次获取的最大对象数 如果指标越多 建议数值越大 可加速采集时间
max_repetitions = 50# 系统启动时间
[[instances.field]]
oid = "1.3.6.1.2.1.1.3.0"
name = "uptime"# 系统名称
[[instances.field]]
oid = "1.3.6.1.2.1.1.5.0"
name = "deviceName"
is_tag = true# 接口表信息
[[instances.table]]
oid = "IF-MIB::ifTable"
name = "interface"
inherit_tags = ["deviceName"]# 接口表信息中的某个字段
[[instances.table.field]]
oid = "IF-MIB::ifDescr"
name = "ifDescr"
is_tag = true[[instances.table.field]]
oid = "IF-MIB::ifSpeed"
name = "ifSpeed"
is_tag = true[[instances.table.field]]
oid = "IF-MIB::ifType"
name = "ifType"
is_tag = true[[instances.table.field]]
oid = "IF-MIB::ifMtu"
name = "ifMtu" 
is_tag = true[[instances.table.field]]
oid = "IF-MIB::ifAlias"
name = "ifAlias" 
is_tag = true# 入方向报文统计(64位) ifHCInOctets
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.6"
name = "ifHCInOctets"# 入方向单播报文统计(64位) ifHCInUcastPkts
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.7"
name = "ifHCInUcastPkts"# 入方向多播报文统计(64位) ifHCInMulticastPkts
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.8"
name = "ifHCInMulticastPkts"# 入方向广播报文统计(64位) ifHCInBroadcastPkts
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.9"
name = "ifHCInBroadcastPkts"# 出方向报文统计(64位) ifHCOutOctets
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.10"
name = "ifHCOutOctets"# 出方向单播报文统计(64位) ifHCOutUcastPkts
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.11"
name = "ifHCOutUcastPkts"# 出方向多播报文统计(64位) ifHCOutMulticastPkts
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.12"
name = "ifHCOutMulticastPkts"# 出方向广播报文统计(64位) ifHCOutBroadcastPkts
[[instances.table.field]]
oid = "1.3.6.1.2.1.31.1.1.1.13"
name = "ifHCOutBroadcastPkts"# 新建空table h3c_system 索引 entPhysicalIndex 获取实体CPU和内存信息
[[instances.table]]
name = "h3c_system"
index_as_tag = true
filters = ["exprA:ent_descr:^(MODULE|Module) (LEVEL|level)1 (SLOT|slot)1$", "exprB:ent_name:.*", "exprC:cpu_usage:.*"]
filters_expression = "exprA && exprB && exprC"# 实体描述信息 entPhysicalDescr
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.2"
name = "ent_descr"
is_tag = true# 实体名称 entPhysicalName
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.7"
name = "ent_name"
is_tag = true# 实体CPU实时利用率统计周期为5秒钟
[[instances.table.field]]
oid = "1.3.6.1.4.1.25506.2.6.1.1.1.1.6"
name = "cpu_usage"# 实体内存实时利用率百分比
[[instances.table.field]]
oid = "1.3.6.1.4.1.25506.2.6.1.1.1.1.8"
name = "mem_usage"# 新建空table h3c_system 索引 entPhysicalIndex 获取实体风扇状态信息
[[instances.table]]
name = "h3c_system"
index_as_tag = true
filters = ["exprA:ent_class:7", "exprB:ent_name:.*", "exprC:fan:.*"]
filters_expression = "exprA && exprB && exprC"# 实体类型 entPhysicalClass
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.5"
name = "ent_class"
is_tag = true# 实体名称 entPhysicalName
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.7"
name = "ent_name"
is_tag = true# 实体错误状态 Normal(2)表示正常
[[instances.table.field]]
oid = "1.3.6.1.4.1.25506.2.6.1.1.1.1.19"
name = "fan"# 新建空table h3c_system 索引 entPhysicalIndex 获取实体电源状态信息
[[instances.table]]
name = "h3c_system"
index_as_tag = true
filters = ["exprA:ent_class:6", "exprB:ent_name:.*", "exprC:psu:.*"]
filters_expression = "exprA && exprB && exprC"# 实体类型 entPhysicalClass
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.5"
name = "ent_class"
is_tag = true# 实体名称 entPhysicalName
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.7"
name = "ent_name"
is_tag = true# 实体错误状态 Normal(2)表示正常
[[instances.table.field]]
oid = "1.3.6.1.4.1.25506.2.6.1.1.1.1.19"
name = "psu"# 新建空table h3c_system 索引 entPhysicalIndex 获取实体传感器温度信息
[[instances.table]]
name = "h3c_system"
index_as_tag = true
filters = ["exprA:ent_descr:^(Sensor|SENSOR) (SLOT|slot)1#.*", "exprB:ent_name:.*", "exprC:temperature_value:.*"]
filters_expression = "exprA && exprB && exprC"# 实体描述信息 entPhysicalDescr
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.2"
name = "ent_descr"
is_tag = true# 实体名称 entPhysicalName
[[instances.table.field]]
oid = "1.3.6.1.2.1.47.1.1.1.1.7"
name = "ent_name"
is_tag = true# 实体温度 hh3cEntityExtTemperature
[[instances.table.field]]
oid = "1.3.6.1.4.1.25506.2.6.1.1.1.1.12"
name = "temperature_value"# 新建空table H3C AP H3C的mib库文件:HH3C-DOT11-APMT-MIB
[[instances.table]]
#oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APObjectTable"
name = "h3c_ap"
index_as_tag = false# AP别名 hh3cDot11CurrAPName
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11CurrAPName"
name = "apname"
is_tag = true# AP的IP地址 hh3cDot11APIPAddress
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APIPAddress"
name = "apip"
is_tag = true# AP的Mac地址 hh3cDot11APMacAddress2
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APMacAddress2"
name = "apmac"
is_tag = true# AP状态 hh3cDot11APOperationStatus join(1)AP正在加入AC;joinConfirm(2)AC确认是否允许AP加入;
# download(3)AP正在从AC下载软件版本;config(4)下发配置;run(5)上线
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APOperationStatus"
name = "status"# AP在线总数 hh3cDot11APConnectCount
[[instances.table.field]]
oid = "HH3C-DOT11-ACMT-MIB::hh3cDot11APConnectCount"
name = "sumnum"# AP在线用户数 hh3cDot11CurrAPStationAssocCount
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11CurrAPStationAssocCount"
name = "user_num"# AP实时CPU利用率(周期1分钟) hh3cDot11APCPURTUsage2
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APCPURTUsage2"
name = "cpu_usage"# AP实时内存利用率(周期1分钟) hh3cDot11APMemRTUsage2
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APMemRTUsage2"
name = "mem_usage"# 新建AP射频信息表
[[instances.table]]
#oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APRadioTable"
name = "h3c_ap_radio"
index_as_tag = false# AP当前ID hh3cDot11CurAPID
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11CurAPID"
name = "cur_apid"
# secondary_index_table = true
is_tag = true# AP别名 hh3cDot11CurrAPName
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11CurrAPName"
name = "apname"
# secondary_index_use = true
# secondary_outer_join = true
is_tag = true# 当前AP射频的ID hh3cDot11RadioID
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11RadioID"
name = "radio_id"
is_tag = true# 当前AP射频的工作状态 hh3cDot11OperStatus
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11OperStatus"
name = "status"# 当前AP射频的信道分配 hh3cDot11Channel
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11Channel"
name = "channel"# 当前AP射频的发射功率电平 hh3cDot11TxPowerLevel
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11TxPowerLevel"
name = "powerlevel"# 当前AP射频接收到的平均信号强度 hh3cDot11AvgRxSignalStrength
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11AvgRxSignalStrength"
name = "avg_rx_ss"# 当前AP射频天线的增益 hh3cDot11AntennaGain
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11AntennaGain"
name = "gain"# 当前AP射频资源的使用率 hh3cDot11ResourceUseRatio
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11ResourceUseRatio"
name = "resource"# 当前AP射频口在主信道的空口利用率 hh3cDot11AirPrimChnlBusy
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11AirPrimChnlBusy"
name = "air_chnl_busy"

需要看懂上面的配置需要了解一下知识点。

具体详解

MIB对象类型:

标量和表量,标量单一指标,表量多指标,并且这些指标都是有该表的唯一索引(索引可能由1个甚至多个oid单一指标组成)。具体查看MIB描述信息,如下所示:

标量如下所示,一般都会说全局节点,没有唯一索引,或者理解为索引就是0,只有一个oid指标对象:

表量如下所示,一般都会说明表节点,oid对象往往都是以Table结尾,里面有以该表的唯一索引的一批具体oid指标对象:

配置文件说明:

  • [[instances]]下面的配置看官方文档

  • [[instances.field]]对应标量,如果是采集标量直接使用。

  • [[instances.table.field]]对应表量,如果采集有唯一索引的oid指标,直接使用。

  • name和oid就是定义采集的oid对象和插入oid指标的名称,注意名称是会做拼接,注意格式。

  • is_tag合理使用该参数,比如你不需要这个oid以指标的方式呈现,而是以有同一个唯一索引的指标标签的方式呈现。

  • index_as_tag合理使用该参数,主要是索引是为作为标签插入,在有两个oid对象组合成的作为唯一索引情况下,很有用,具体根据实际数据说话。

空表是只新建单独的空白,插入某些需要的指标,而不是采集该唯一索引下所有的指标,一般不建议直接读取***Table的,比如:

# AP射频信息表
[[instances.table]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11APRadioTable"
name = "h3c_ap_radio"
index_as_tag = false

而是新建一个空表,插入我们具体关注的指标即可,一些无用垃圾指标,不要获取。

# 新建AP射频信息空表
[[instances.table]]
name = "h3c_ap_radio"
index_as_tag = false# 当前AP射频的工作状态 hh3cDot11OperStatus
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11OperStatus"
name = "status"# 当前AP射频的信道分配 hh3cDot11Channel
[[instances.table.field]]
oid = "HH3C-DOT11-APMT-MIB::hh3cDot11Channel"
name = "channel"

高级功能

值筛选:通过标签和值设置简单的正则表达式,过滤我们不需要的数据,得到想要的数据。

表连接如果获取的数据是在不同的索引表,而我们展示数据或者做监控报警,需要用到这些不同索引表中的数据,而单独索引表的指标有没有我们想要的数据,这个时候我们就需要使用表连接,对两个表量进行合并查询。

高级功能后续单独开篇讲讲。

最终效果

又或者这样

更多指标静待各位道友自行设置了。

最后

如果觉得这篇内容比你的咖啡还提神,就动动手指点个赞吧!如果觉得这里有趣,记得关注,不然下次可能会错过哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:图解手撕B-树

文章目录 为什么需要引入B-树?B树是什么?B树的插入分析 本篇总结的内容是B-树 为什么需要引入B-树? 回忆一下前面的搜索结构,有哈希,红黑树,二分…等很多的搜索结构,而实际上这样的结构对于数…

竞赛保研 YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快,YOLOv6还没用熟YOLOv7就来了,如果有同学的毕设项目想用上最新的技术,不妨看看学长的这篇文章,学长带大家简单的…

SpringBoot接入轻量级分布式日志框架GrayLog

1.前言 日志在我们日常开发定位错误,链路错误排查时必不可少,如果我们只有一个服务,我们可以只简单的通过打印的日志文件进行排查定位就可以,但是在分布式服务环境下,多个环境的日志统一收集、展示则成为一个问题。目…

掌握这个技巧,你也能成为学习高手!

在当今社会,思想政治学习具有重要的意义。随着社会的不断发展,个体与集体之间的关系、公共事务的处理、社会责任感等问题愈发凸显。 思政通学习小程序作为一种现代化的学习手段,为我们提供了更便捷、高效的途径,使我们更好地理解和…

实战 | API接口泄露=>未授权访问=>垂直越权=>信息泄露

文章目录 实战 | API接口泄露>未授权访问>信息泄露0x01 前言0x02 初探系统0x03 API接口泄露0x04 未授权访问系统日志接口0x05 垂直越权0x06 信息泄露 实战 | API接口泄露>未授权访问>信息泄露 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测…

TensorRT 深入介绍

前言 一、tensorRT 做了那些优化 1、算子融合 常见的算子融合有以下操作: conv bn reluconv reluconv relu max_poolconv add reluconv add 2、量化 因为我们在训练的时候,参数的每次更新的幅度都是十分微小的。所以为了保证在训练时梯度反…

rabbitmq界面主要参数分析

本篇主要分析rabbitmq broker界面参数 rabbitmq界面主要参数分析 1、connections User Name: user - 连接所使用的用户名。 State: running - 连接当前的状态,这里表明连接是活动的。 SSL/TLS: ○ - 表示这个连接没有使用SSL/TLS加密。 内部或受信任的网络中可能…

数据结构学习笔记(七)搜索结构

文章目录 1. 前言2. 概念3 静态搜索结构3.1 静态搜索表3.2 顺序搜索表3.2.1 基于有序顺序表和顺序搜索和折半搜索 4 二叉搜索树4.1 搜索二叉树的类定义4.2 搜索二叉树的搜索4.3 搜索二叉树的插入4.4 搜索二叉树的删除 5 AVL树5.1 平衡化旋转5.1.1 右旋:LL型状态5.1.…

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s,统计的是关机后从按下 power 按键到显示锁屏的时间,当对openharmony的系统进行了裁剪子系统,系统app,禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

win10系统计算机名称查看及重命名操作方法

win10系统计算机名称查看及重命名操作方法 一、在 Windows 10 操作系统中查看计算机的名称步骤二、重命名计算机名称 一、在 Windows 10 操作系统中查看计算机的名称步骤 点击桌面左下角的“开始”按钮,点击“设置”图标(齿轮状图标)&#x…

采购审批工作流程快速指南

对很多人来说,控制每一分钱的支出是一件棘手的事情,但在当下充满不确定性的环境里,这一点与收入增长同等重要。正如俗话说:要想赚钱,先学会花钱。 本文将分析支出控制的基石之一:采购审批工作流程。有了审…

安防视频云平台/可视化监控云平台EasyCVR获取设备录像失败,该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。GB28181音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视…