大家好,我是小斐呀。
最近情绪有点不稳,导致更新质量也很差,我会尽快调整回来。话说写公众号文章也有一段时间了,之前有段时间进入一种 思无疆,意无穷 的状态,那个时候躺在床上想起思路了,都能爬起来再写一篇,什么时候可以再次入定,目前的状态就是意念不通达,摆脱情绪加速进入意念通达之境。
指标提取
这篇我们展开聊聊夜莺架构如何对信锐无线做监控告警最佳实践,信锐是属于深信服子品牌,主要在无线领域布局,在很多实际场景中有使用信锐无线用户,乘着最近修复好的 Categraf 新版本,可以更好的实现对无线配置的采集,采集配置更加健壮,就来看看如何适配好信锐无线。
Categraf 新版本 SNMP 插件支持在带数值型的字符串文本中提取数值从而转化为指标了,非常的方便更加适合标准化采集了,类型转换文章介绍:
信锐无线定义的 mib 数据类型真的是不友好,都是乱七八糟的,在把采集的数据转为 Prometheus 指标的时候真的一点都不友好,需要对 SNMP 协议采集响应的数据做加工转换,比如以下数据类型:
"36%"以%单位结尾的String类型"10dBm"以dBm单位结尾的String类型"200 Byte"以Byte单位结尾的String类型
这些 String 带单位的数据都需要单独使用 conversion = "float" 转换一下。
采集架构
针对信锐无线的采集架构还是基于夜莺开源版本的组件构成:
目前信锐没有适配 SNMP Exporter 如果那位群友需要可以在留言我后续安排起来,如果不愿意等待可以使用夜莺架构。
我们可以根据信锐提供的 mib 文件,拿到对应指标 oid 从而实现信锐无线指标统一,如下所示部分指标:
这些指标最开始就可以定义好名称,然后在写配置文件的时候就设定好指标名。
采集配置
安装部署好 categraf 后就可以开始基于模块化的采集指标,首先我们需要新建一个 snmp_mapping.toml 文件:
# snmp_mapping.toml
interval="30s"
# 无线
# [mappings]
# "udp://10.10.10.253" = { env = "office", layer = "core" }
新建其他模块化采集配置文件:
snmp_sundray_system.toml snmp_sundray_interface.toml snmp_sundray_apinfo.toml snmp_sundray_apradio.toml snmp_sundray_sta.toml snmp_sundray_ssid.toml
等等模块化采集配置文件,如下所示:
snmp_sundray_system.toml
[[instances]]
agents=[
"udp://10.10.10.254",# NMC 3.15.0
"udp://10.10.10.253"# NMC 3.15.0
]
# metrics_name_prefix = "xinrui_"
interval_times=2
labels={region="shanghai",role="wireless",layer="core"}
version=2
community="public"
timeout="5s"
retries=3
max_repetitions=15
path=["/data/categrafx/mibs/sundray"]
translator="gosmi"
agent_host_tag="ident"
health_check_interval="60s"
health_check_timeout="5s"
max_fail_count=3
recovery_interval="5m"
[[instances.field]]
# oid = "1.3.6.1.2.1.1.3.0"
oid="SNMPv2-MIB::sysUpTime.0"
name="uptime"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.1.10.0"
oid="SANGFOR-GENERAL-MIB::sfSysName.0"
name="device_name"
is_tag=true
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.1.3.0"
oid="SANGFOR-GENERAL-MIB::sfSysCpuCostRate.0"
name="system_cpu_usage"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.1.15.0"
oid="1.3.6.1.4.1.45577.1.15.0"
name="system_mem_usage"
conversion="float"
[[instances.table]]
name="system"
index_as_tag=true
inherit_tags=["device_name"]
[[instances.table.field]]
# # oid = "1.3.6.1.4.1.45577.1.5.2"
oid="SANGFOR-GENERAL-MIB::sfFilesystemName"
name="filesystem_name"
is_tag=true
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.5.3"
oid="SANGFOR-GENERAL-MIB::sfDiskSize"
name="disk_size"
conversion="float"
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.5.4"
oid="SANGFOR-GENERAL-MIB::sfDiskUsed"
name="disk_used"
conversion="float"
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.5.4"
oid="SANGFOR-GENERAL-MIB::sfDiskAvail"
name="disk_avail"
conversion="float"
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.5.4"
oid="SANGFOR-GENERAL-MIB::sfDiskUsedPercent"
name="disk_usage"
conversion="float"
[[instances.table]]
name="system"
index_as_tag=true
inherit_tags=["device_name"]
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.6.2"
oid="SANGFOR-GENERAL-MIB::sfCpuLoadLast1Min"
name="cpu_load_1m"
conversion="float"
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.6.3"
oid="SANGFOR-GENERAL-MIB::sfCpuLoadLast5Min"
name="cpu_load_5m"
conversion="float"
[[instances.table.field]]
# oid = "1.3.6.1.4.1.45577.1.6.4"
oid="SANGFOR-GENERAL-MIB::sfCpuLoadLast15Min"
name="cpu_load_15m"
conversion="float"
[[instances]]
agents=[
"udp://10.10.10.254",# NMC 3.15.0
"udp://10.10.10.253"# NMC 3.15.0
]
# metrics_name_prefix = "xinrui_"
interval_times=2
labels={region="shanghai",role="wireless",layer="core"}
version=2
community="public"
timeout="5s"
retries=3
max_repetitions=15
path=["/data/categrafx/mibs/sundray"]
translator="gosmi"
agent_host_tag="ident"
health_check_interval="60s"
health_check_timeout="5s"
max_fail_count=3
recovery_interval="5m"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.1.10.0"
oid="SANGFOR-GENERAL-MIB::sfSysName.0"
name="device_name"
is_tag=true
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.2.12.1.1.0"
oid="SANGFOR-GENERAL-MIB::sfApOnlineNum.0"
name="ac_ap_connected_total"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.2.12.1.2.0"
oid="SANGFOR-GENERAL-MIB::sfApOffNum.0"
name="ac_ap_disconnected_total"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.2.12.1.4.0"
oid="SANGFOR-GENERAL-MIB::sfApTotalNum.0"
name="ac_ap_total"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.2.12.2.1.0"
oid="SANGFOR-GENERAL-MIB::sfUserNum.0"
name="ac_sta_online_total"
snmp_sundray_interface.toml
[[instances]]
agents=[
"udp://10.10.10.254",# NMC 3.15.0
"udp://10.10.10.253"# NMC 3.15.0
]
# metrics_name_prefix = "xinrui_"
interval_times=2
labels={region="shanghai",role="wireless",layer="core"}
version=2
community="public"
timeout="5s"
retries=3
max_repetitions=15
path=["/data/categrafx/mibs/sundray"]
translator="gosmi"
agent_host_tag="ident"
health_check_interval="60s"
health_check_timeout="5s"
max_fail_count=3
recovery_interval="5m"
[[instances.field]]
# oid = "1.3.6.1.4.1.45577.1.10.0"
oid="SANGFOR-GENERAL-MIB::sfSysName.0"
name="device_name"
is_tag=true
[[instances.table]]
name="interface"
# oid = "1.3.6.1.4.1.45577.2.12.3"
index_as_tag=true
inherit_tags=["device_name"]
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfMtu"
name="mtu"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfMac"
name="if_mac"
is_tag=true
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfStatus"
name="oper_state"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfRecvByte"
name="in_octets"
conversion="float"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfDropRecvPacket"
name="in_discards"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfRecvErrPacket"
name="in_errors"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfSendByte"
name="out_octets"
conversion="float"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfDropSendPacket"
name="out_discards"
[[instances.table.field]]
oid="SANGFOR-GENERAL-MIB::sfIfSendErrPacket"
name="out_errors"
[[instances.processor_enum]]
metrics=["*oper_state"]
[instances.processor_enum.value_mappings]
Up=1
Down=0
列出关于系统和接口指标的配置,具体详细可入星球拿全面的。
# 使用 netsnmp 引擎解析 mib 文件
export MIBDIRS="/data/categraf-xinrui/mibs/xinrui"
# 调试测试输出指标
/data/categraf-xinrui/categraf --test --debug --inputs snmp
# 使用 gosmi 引擎解析 mib 文件
# 调试测试输出指标
/data/categraf-xinrui/categraf --test --debug --inputs snmp
测试调试的时候最好是单个模块写完,单独测试,全部测试好,在归档写好的配置文件,然后继续写下一个模块文件,这样可以最大化最高效的解决问题,当然如果你希望开箱即用,可直接星球里面拿现成的示例配置。
可视化
这些配置和模版都放在网盘之中,如果需要结合配置文件和模版文件套用即可。
end
如果你维护的环境当下正是信锐,你需要采集信锐无线相关的指标,不妨试试这套架构。
针对这块的有需求或者想沟通交流,可以加入之前建立的群,到群里咨询或交流即可,加群可公众号后台私信加我,我拉你进群。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...