立山 发表于 2024-6-13 20:23:51

统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?

简单网络管理协议SNMP(Simple Network Management Protocol)用于网络设备的管理。网络设备种类多种多样、差别厂商提供的管理接口(如命令行接口)又不雷同,这使得网络管理变得愈发复杂。为解决这一问题,SNMP应运而生。SNMP作为广泛应用于TCP/IP网络的标准网络管理协议,提供了统一的接口,从而实现了差别种类和厂商的网络设备之间的统一管理。通过SNMP数据的监测数据,用户可以实时关注到网络设备的状态和非常变革。
SNMP 简介

随着网络技术飞速发展,网络设备数量成几何级数增加,使得网络管理员对设备的管理变得越来越困难;同时,网络作为复杂的分布式体系,其覆盖地域不断扩大,也使得对这些设备进行实时监控和故障排查变得极为困难。网络设备种类多种多样,差别设备厂商提供的管理接口(如命令行接口)各不雷同,这使得网络管理变得愈发复杂。
为了应对这一场景,SNMP应用而生。作为广泛应用于TCP/IP网络的网络管理标准协议,SNMP支持网络管理体系,以监测连接到网络上的设备是否有需要运维关注的情况。同时,SNMP接纳轮询机制,提供最根本的功能集,得当小型、快速、低价格的情况使用,而且SNMP以用户数据报协议(UDP)报文为承载,因而受到绝大多数设备的支持,同时保证管理信息在任意两点传送,便于管理员在网络上的任何节点检索信息,进行故障排查。
随着技术演进,SNMP协议相继衍生出三个版本:SNMPv1、SNMPv2c和SNMPv3。


[*]SNMPv1
作为SNMP协议的最初版本,提供最小限度的网络管理功能。SNMPv1基于团体名认证,安全性较差,且返回报文的错误码也较少。


[*]SNMPv2c
接纳团体名(community)认证,在SNMPv1版本的基础上引入了GetBulk和Inform操作,支持更多的标准错误码信息,支持更多的数据类型(Counter64、Counter32)。


[*]SNMPv3
在安全性方面进行加强,提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制。SNMPv3版本支持的操作和SNMPv2c版本支持的操作一样。
目前,v1版本使用较少,一样平常使用v2c版本,如果对安全认证有需求,可以使用v3版本。
SNMP体系构成

SNMP根本组件包罗网络管理体系NMS(Network Management System)、代理历程(Agent)、被管对象(Managed Object)和管理信息库MIB(Management Information Base)。如图所示他们共同构成SNMP的管理模子,在SNMP的体系布局中都起着至关紧张的作用。
https://img-blog.csdnimg.cn/img_convert/0a1622f654159d53a79c243607e54288.png


[*]NMS
Network Management System,网络管理体系,一样平常是各种网管软件,可以向agent查询/修改各种信息,也可以继承agent的主动推送,在我们的场景中,就是snmp exporter,仅对agent做信息查询。


[*]Agent
被管理设备上的一个代理历程,收集被管理设备的信息并汇报给NMS。


[*]MIB
Management Information Base,是一个数据库,列出了被管理设备可以提供的各项数据,每项数据都对应一个唯一的OID。


[*]Device
设备,现实的网络设备,包罗交换机、路由器、防火墙、UPS、AP、软路由等等,只要支持SNMP,都可以视为一个网络设备。


[*]Managed Object
被管理对象,一个设备包含至少一个被管理对象,大概是设备本身,也大概是某个硬件(一个网口),也大概是一些参数合集。


[*]OID
Object ID,对象标识符,用于定位一个数据项。OID是一串数字,比如1.3.6.1.2.1.1表现system,数字是树形布局,左侧为根,右侧为叶,前面一截是由IANA分配的厂商标识符,后面就是各个厂商自定的,所以差别厂商设备的OID树差别很大。OID树布局参见下图。


[*]MODULE
因为SNMP可以监控的设备和厂商多种多样,所以SNMP exporter中划分了很多module,比如网络设备的if_mib,软路由的ddwrt,paloalto_fw防火墙等等,一共有十几种,最常用的就是if_mib。
https://img-blog.csdnimg.cn/img_convert/a3f10cea190207b57b9683fc9192e67e.png
SNMP Exporter

SNMP协议中用差别的OID区分差别的状态数据,所以OID非常类似于Prometheus中的指标的概念,SNMP Exporter通过从Agent查询指定的OID数据,同时将数据映射到可读的指标上,实现SNMP数据到Prometheus指标的转换。SNMP Exporter就默认提供了非常丰富的转换设置,大部分场景下用户无需额外设置即可将OID转换为可读的指标数据。
SNMP Metric 监控参考模子

SNMP Metrics采集

SNMP 可以帮助运维职员以极为简单而有效的方式管理网络。首先,SNMP 帮助运维职员收集网络上差别设备带宽使用量的信息。在进行故障排除的同时,更加快速找出网络性能趋势或问题。SNMP采集到的数据都是来自设备提供,差别厂商的设备可以提供的数据不尽一致,SNMP Exporter尽大概多的提供兼容,默认设置中已经包含了常见的各个厂商的OID映射,涵盖了市面上紧张的厂家及其网络产品,可以或许满足绝大多数场景需求,详见Prometheus开源社区的相关文档。在当前版本中,我们支持if_mibmodule的指标数据采集,更多module支持将根据需讨情况陆续开放。
   文档链接:https://github.com/prometheus/snmp_exporter/blob/main/snmp.ym这里我们常见的以思科16口交换机为例,紧张指标包罗:
https://img-blog.csdnimg.cn/img_convert/671218eaf39683406baa2dd0366c7ab8.webp?x-oss-process=image/format,png
SNMP监控大盘

我们默认提供了SNMP Status和SNMP Interface Detail两个大盘,紧张针对if_mib场景,监控网络流量等信息。
SNMP Status

紧张展示设备的总体状态,包罗设备运行时长,当前的流入/流出流量、出入流量总计、各个端口的的实时流量信息、流量变革趋势等。
https://img-blog.csdnimg.cn/img_convert/b99822227bb42b497d2ab024ecad675c.webp?x-oss-process=image/format,png
SNMP Interface Detail

展示各个端口工作详情。包罗端口状态、端口是否连接、端口速率、MTU设置等,以及各种流量(单播/组播/多播等)的速率/包数量变革情况。
需要注意的是,SNMP Interface Detail大盘使用前,需要在Variable 中设置需要查看的DataSource。
https://img-blog.csdnimg.cn/img_convert/4d65b1d2a69ff706872fcf49b780a18b.webp?x-oss-process=image/format,png
SNMP告警规则

参考前面临各项紧张指标的介绍,针对SNMP可以设置一下告警项:


[*]Interface Throughput 到达 speed 的 80%
[*]出/入方向的丢包/Error数大于阈值
[*]出方向的Queue长度大于阈值
[*]interface 数量变革
使用阿里云 Prometheus 监控 SNMP

安装SNMP监控在Prometheus for 容器服务实例中,SNMP已经默认在集成中央中展示,用户可以在arms控制台 -- 实例详情页 -- 集成中央中找到入口。
点击SNMP图标,可以看到常见的指标列表和大盘缩略图,需要说明的是,由于OID/MIB的复杂性,列出的只是一部分常见的指标信息。
点击+安装可以接入SNMP监控,您只需要填写exporter 名称和设备IP地址,即可快速拉起一个SNMP exporter。此中的采集路径和采集隔断,一样平常无需修改,保持默认值即可。设置如下图:
https://img-blog.csdnimg.cn/img_convert/3afb8f7dc0c2aa8cccd1fce987f5b574.webp?x-oss-process=image/format,png
点击确定后,会在您的ack集群中,arms-prom namespace下,新增一个名为snmp-exporter-snmp-test-1的deployment,并自动完成采集job的设置。此时您可以在arms控制台 -- 实例详情页 -- 服务发现 -- Target中看到新设置的采集job。同时也可以点击集成中央 -- SNMP图标 快速浏览相关的Target/指标/大盘/告警/服务发现/Exporter等信息。
查看大盘

如果您需要查看SNMP相关大盘,可以从arms控制台 -- 实例详情页 -- 大盘列表中点选snmp_exporter快速列出相关大盘,大概从集成中央中,点击SNMP图标,点击大盘标签页,也可以找到对应的dashboard。
设置告警

当您在集成中央安装SNMP监控时,已经默认增加了snmp_exporter告警分组的相关规则,但未启用,您只需要简单修改参数并确认启用即可。
可以从arms控制台 -- 实例详情页 -- 告警规则 -- 创建告警规则中进入规则新增页面,在此中告警分组选择snmp_exporter告警值班并选择您需要启用的告警规则,确认参数阈值并生存,即可完成告警规则的创建。
SNMP指标未采集的排查方法

SNMP Exporter本身的紧张工作是指标映射,一样平常都能稳定运行,但SNMP指标一样平常都会涉及到网络设备,出现网络问题的概率较高。如果出现指标采集不到的问题,可以参考如下的排查思路。
1.查抄Prometheus Target状态,如果Target显示为Unhealthy状态,请排查snmp-exporterpod运行状态;如果Target状态正常,继续下一步。
https://img-blog.csdnimg.cn/img_convert/8e7a646c4f8fdd236976749a4ed75fb1.webp?x-oss-process=image/format,png
2.查看snmp-exporterPOD 日志,确认日志中是否有报错信息,如果是网络问题都会在日志中有明白表现,可以根据报错引导排查。
https://img-blog.csdnimg.cn/img_convert/948874b0fad79968436f721f4336b9da.webp?x-oss-process=image/format,png
3.如果日志中没有非常,同时只是某个SNMP指标缺失,其他SNMP指标能正常收集到,较大概率是因为设备确实没有这个指标,我们可以使用snmpwalk工具协助排查确认。

[*]
[*]SNMP Exporter能采集到的数据,都可以通过snmpwalk获取到,很多Linux发行版默认不包含snmpwalk,需要先安装net-snmp-utils这个包。
[*]在能连接到SNMP设备的机器上,使用snmpwalk获取设备原始数据。

https://img-blog.csdnimg.cn/img_convert/80c9bd8f63f1d23e2b1dbf51fdd824b5.webp?x-oss-process=image/format,png

[*]
[*]如果snmpwalk依然未能获取到数据,需要向设备厂商确认是否提供此数据。

自建 Prometheus 与阿里云 Prometheus 监控的优劣对比

Prometheus作为目前最主流的可观测开源项目之一,已经被众多企业所广泛应用。但在现实生产过程中,还是遇到各种各样问题,此中包罗:


[*]由于安全、构造管理等因素,用户业务通常摆设在多个相互隔离的 VPC,需要在多个 VPC 内都重复、独立摆设 Prometheus,导致摆设和运维成本高。
[*]每套完整的自建观测体系都需要安装并设置 Prometheus、Grafana、AlertManager 等组件,摆设过程复杂、实施周期长,而且每次升级都需要对每个组件进行维护。
[*]随着监控规模不断扩大,资源消耗呈非线性快速增加,体系可用性无法得到保障。
[*]对于相关组件,自建 Prometheus 无法实现一站式、全局视角的监控建设。
[*]开源分享的相关大盘不敷专业,却少开箱即用的丰富指标,不能帮助用户更灵敏的的了解网关的整体运行状况。
针对以上问题,阿里云Proemtheus监控进行了以下几个方面的优化:
一、性能强化&降低资源消耗,压降IT运维成本

为了进一步进行性能优化,阿里云Prometheus监控将Agent 摆设在用户侧,保留原生采集本领同时, 尽量使用最少资源;通过采集存储分离架构,进步整体性能;采集组件优化,提升单副本采集本领,降低资源消耗;通过多副本横向扩展均衡分解采集任务,实现动态扩缩,解决开源水平扩展问题。采集/数据处置惩罚/存储组件支持多副版本,保证焦点数据链路高可用;基于集群规模可直接进行弹性扩容;支持数据重传,彻底解决丢弃逻辑弊病,确保数据完整性与准确性。
同时,为了应对大规模数据、长时间区间的查询场景,通过DAG执行优化、算子下推,提升大规模数据查询性能并支持长时间区间秒级查询;通过Global DataSource和Global View实现对多集群统一监控与跨集群聚合查询。在提供企业级本领强化同时,全方位降低企业使用Prometheus的IT运维成本。通过包年包月、按量付费等多种计费方式让费用付出与规划更加清晰与机动,相较于开源版本节流37%以上。
https://img-blog.csdnimg.cn/img_convert/e4e8eb15f8859658d76a1465570c73e5.webp?x-oss-process=image/format,png
二、与阿里云主流云服务深度集成

云产品在各自控制台都提供自身产品的可观测性,但这些云产品的指标及看板散落在各控制台,且无法进行精细化的指标数据应用。Prometheus服务提供云产品监控功能,将这些数据进行统一显现、查询、告警,为运维团队提供更加便捷的一样平常运维监控界面。
https://img-blog.csdnimg.cn/img_convert/d311dad690b8280725fd07d75cbd681e.webp?x-oss-process=image/format,png
三、Grafana看板加强,让云服务监控更简单

想要更好、更快速的呈现相关指标图表,阿里云Prometheus监控预置Grafana组件,预置常见云服务、应用等看板模板,如应用实时监控服务ARMS、云监控CMS、日志服务SLS、阿里云Elasticsearch等云服务,提供各种云服务的数据源设置及预置大盘,实现各种可观测数据的统一展示。如容器、消息队列Kafka等,进一步提供GrafanaPro大盘,帮助运维进行更加精细化的指标观测。在预置看板之外,可以通过Grafana官方自由增加新插件,添加新的可视化模板以及数据源,进一步满足个性化运维监控需求。
https://img-blog.csdnimg.cn/img_convert/07ac738c4ef78fb2af228c00ca2d0278.webp?x-oss-process=image/format,png
结语

阿里云Prometheus与阿里云容器服务无缝集成,提供了SNMP设备的指标采集、用户大盘、告警规则等项目的一键集成,用户免运维,开箱即用,目前SNMP指标采集功能仍在不断演进中,欢迎各人试用和提出改进意见。
原文链接
本文为阿里云原创内容,未经允许不得转载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?