打造融合式监控平台满足99%企业对监控告警的需求

大家好,我是小斐呀。

在前面的文章中分享了一些基于 Prometheus 体系如何对网络设备的监控告警案例,后台私信也收到了很多粉丝朋友们的一些疑问和咨询,随着这块的不断深入,提的问题不断增加,需求越来越不一致后,我越来越意识到靠我自己是很难满足所有人的需求,故我建立了一个关于这块的小众圈子,把日常遇到的问题,沉淀的内容和文档视频放到知识星球中,一来可以聚集真正需要的朋友,二来可以建议一个友好的交流圈子,这样既可以沉淀内容又可以认识更多志同道合的朋友们。

很多小伙伴都和我一对一或一对多的远程演示、视频、语音等内容输出,在可观测性指标监控这块的需求或工作中有了新的思路和解决方案,并且已经有一些小伙伴得到了很大的进步,我都是看在眼里的,其实真的感觉到很高兴,这种为小伙伴解决了问题后的喜悦是精神层面上的,如果对小圈子感兴趣的可以公号私信加入。

废话不多说,我们开始深入今天的主题,深入之前需要普及一个小理念,可观测性指标监控的三个阶段:

  • 收集数据:指标监控领域各种指标采集器和自定义脚本就是收集数据

  • 存储数据:指标监控领域各种时序数据库作为采集器的后端时序数据存储器

  • 探索数据:探索数据是开放式定义凡是符合后期对数据的加工(查询)等都属于探索数据范畴,最典型的就是数据可视化和告警规则和记录规则的定义

那么初步介绍了指标监控的三个阶段后,下面我们开始步入正题。

今天分享的是星球有个小伙伴要对公司的网络设备以及一些其他资源做监控并告警,主要有如下几块资源对象:

根据以上监控对象类型和对监控的需求,我们需要选择合适的监控告警架构,首先初步对他监控需求做了一个拆解:

拆解分析一下后发现满足需求的只有不同生态组合起来的架构可以满足需求:

上面架构融合了 夜莺 生态、 VictoriaMetrics 生态、 Grafana 生态,以及 Prometheus 生态中的各种 Exporter 采集器,然后实现数据查询在夜莺中统一运维并且 Grafana 可嵌入夜莺中,实现了对 Grafana 生态仪表板以及夜莺生态仪表板的应用,夜莺中支持记录规则的写入和告警规则可视化定义,同时集成了告警引擎,可以在夜莺中统一告警出口,如果搭建可以参考这篇:搭建部署

网络设备

接下来我将以网络设备的监控展开聊聊,其他类型的监控在这篇文章就不涉及;目前现网中主要以华三的设备为主,网络设备类型有交换机、路由器、无线AC/AP等,现在需要对这些网络设备做监控告警并且需要以统一的监控架构平台实现,也就是统一使用 Prometheus 兼容体系来实现所有对象类型的指标监控告警。

根据上面的架构可知,要实现这样子的监控需要三个阶段:收集采集存储数据探索数据 。网络设备监控告警也是一样需要先收集数据,然后把收集的数据存储到时序数据库中,最后再拿时序数据库中的数据做查询展示和告警。

网络设备的数据采集无非就是 SNMP 为主,数据中心设备以 telemetry 为主,性能上能满足高速大流量转发的场景需求,然后数据存储首推 VictoriaMetrics 作为 Prometheus 的增强版补充了 Prometheus 在某些场景的弱点和性能上面的优化,数据探索就可以综合来看,目前可视化选择 Grafana 以及夜莺仪表板相互补充,记录规则和告警规则统一用夜莺来实现,最终通过 webhook 或者 邮件 方式发出告警信息,下面以思维导图形式展示相关组件:

数据采集

监控的第一步就需要对不同对象做数据采集,这里的网络设备由于都不支持 telemetry 协议,这里就只能使用 SNMP 通用协议,我们可以同时使用 SNMP ExporterCategraf 中的 SNMP 插件这两者来互相补充采集指标。具体配置文件可去圈子查看,由于不同场景每个人需要的指标不一样,在这里简单说下网络设备需要采集哪些指标:

如果通过 categraf 中的 SNMP 插件采集,我的最佳实践建议是相同的网络设备品牌按照类型指标进行分开采集,也就是采集文件进行命名区分,通过 Git 去管理配置文件,最好可以通过 HTTP 去动态加载配置文件,按照下面的表格所示:

品牌 指标类型 采集配置文件名
华为 interface snmp_huawei_interface.toml
system snmp_huawei_system.toml
华三 interface snmp_h3c_interface.toml
system snmp_h3c_system.toml
思科 interface snmp_cisco_interface.toml
system snmp_cisco_system.toml

其他指标类型按照这种类似的命名规范,方便后续配置文件管理和运维修改,当采集完成后,会把数据写入时序数据库中,接着就实现了以下基础数据可视化面板:







有些指标是无法直接通过采集得到的,需要利用一些函数或算术运算得到我们想要的指标和面板:

比如某个小伙伴需要接口流量带宽占用百分比数据,并且可以在 Grafana 面板中实现前十的利用率百分比接口,我们可以如下计算得到:

# 接口上行带宽百分比(前10)   topk(10, sum by (ifDescr) ((irate(snmp_interface_ifHCOutOctets[5m]) * 8) / (snmp_interface_ifHighSpeed * 1000000) * 100))      # 接口下行带宽百分比(前10)   topk(10, sum by (ifDescr) ((irate(snmp_interface_ifHCInOctets[5m]) * 8) / (snmp_interface_ifHighSpeed * 1000000) * 100))   

最后可以得到的面板如下所示:

这篇就简单分享下网络设备的基础指标监控,如果有什么疑问可以评论或私信,如果需要自定义或者需要打造自己的监控平台可以直接入星球沟通。

6