简略网络管理协定 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 的体系结构中都起着至关重要的作用。
- 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。
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 口交换机为例,次要指标包含:
SNMP 监控大盘
咱们默认提供了 SNMP Status 和 SNMP Interface Detail 两个大盘,次要针对 if_mib 场景,监控网络流量等信息。
SNMP Status
次要展现设施的总体状态,包含设施运行时长,以后的流入 / 流出流量、出入流量总计、各个端口的的实时流量信息、流量变化趋势等。
SNMP Interface Detail
展现各个端口工作详情。包含端口状态、端口是否连贯、端口速率、MTU 配置等,以及各种流量(单播 / 组播 / 多播等)的速率 / 包数量变动状况。
须要留神的是,SNMP Interface Detail 大盘应用前,须要在 Variable 中配置须要查看的 DataSource。
SNMP 告警规定
参考后面对各项次要指标的介绍,针对 SNMP 能够配置一下告警项:
- Interface Throughput 达到 speed 的 80%
- 出 / 入方向的丢包 /Error 数大于阈值
- 出方向的 Queue 长度大于阈值
- interface 数量变动
应用阿里云 Prometheus 监控 SNMP
装置 SNMP 监控在 Prometheus for 容器服务实例中,SNMP 曾经默认在集成核心中展现,用户能够在 arms 控制台 — 实例详情页 — 集成核心中找到入口。
点击 SNMP 图标,能够看到常见的指标列表和大盘缩略图,须要阐明的是,因为 OID/MIB 的复杂性,列出的只是一部分常见的指标信息。
点击 + 装置能够接入 SNMP 监控,您只须要填写 exporter 名称和设施 IP 地址,即可疾速拉起一个 SNMP exporter。其中的采集门路和采集距离,个别无需批改,放弃默认值即可。配置如下图:
点击确定后,会在您的 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 状态失常,持续下一步。
2. 查看 snmp-exporterPOD 日志,确认日志中是否有报错信息,如果是网络问题都会在日志中有明确体现,能够依据报错领导排查。
3. 如果日志中没有异样,同时只是某个 SNMP 指标缺失,其余 SNMP 指标能失常收集到,较大概率是因为设施的确没有这个指标,咱们能够应用 snmpwalk 工具帮助排查确认。
- SNMP Exporter 能采集到的数据,都能够通过 snmpwalk 获取到,很多 Linux 发行版默认不蕴含 snmpwalk,须要先装置 net-snmp-utils 这个包。
- 在能连贯到 SNMP 设施的机器上,应用 snmpwalk 获取设施原始数据。
- 如果 snmpwalk 仍然未能获取到数据,须要向设施厂商确认是否提供此数据。
自建 Prometheus 与阿里云 Prometheus 监控的优劣比照
Prometheus 作为目前最支流的可观测开源我的项目之一,曾经被泛滥企业所广泛应用。但在理论生产过程中,还是遇到各种各样问题,其中包含:
- 因为平安、组织治理等因素,用户业务通常部署在多个互相隔离的 VPC,须要在多个 VPC 内都反复、独立部署 Prometheus,导致部署和运维老本高。
- 每套残缺的自建观测零碎都须要装置并配置 Prometheus、Grafana、AlertManager 等组件,部署过程简单、施行周期长,并且每次降级都须要对每个组件进行保护。
- 随着监控规模不断扩大,资源耗费呈非线性疾速减少,零碎可用性无奈失去保障。
- 对于相干组件,自建 Prometheus 无奈实现一站式、全局视角的监控建设。
- 开源分享的相干大盘不够业余,却少开箱即用的丰盛指标,不能帮忙用户更迅速的的理解网关的整体运行状况。
针对以上问题,阿里云 Proemtheus 监控进行了以下几个方面的优化:
一、性能强化 & 升高资源耗费,压降 IT 运维老本
为了进一步进行性能优化,阿里云 Prometheus 监控将 Agent 部署在用户侧,保留原生采集能力同时,尽量应用起码资源;通过采集存储拆散架构,进步整体性能;采集组件优化,晋升单正本采集能力,升高资源耗费;通过多正本横向扩大平衡合成采集工作,实现动静扩缩,解决开源程度扩大问题。采集 / 数据处理 / 存储组件反对多副版本,保障外围数据链路高可用;基于集群规模可间接进行弹性扩容;反对数据重传,彻底解决抛弃逻辑弊病,确保数据完整性与准确性。
同时,为了应答大规模数据、长时间区间的查问场景,通过 DAG 执行优化、算子下推,晋升大规模数据查问性能并反对长时间区间秒级查问;通过 Global DataSource 和 Global View 实现对多集群对立监控与跨集群聚合查问。在提供企业级能力强化同时,全方位升高企业应用 Prometheus 的 IT 运维老本。通过包年包月、按量付费等多种计费形式让费用收入与布局更加清晰与灵便,相较于开源版本节俭 37% 以上。
二、与阿里云支流云服务深度集成
云产品在各自控制台都提供本身产品的可观测性,但这些云产品的指标及看板散落在各控制台,且无奈进行精细化的指标数据利用。Prometheus 服务提供云产品监控性能,将这些数据进行对立展示、查问、告警,为运维团队提供更加便捷的日常运维监控界面。
三、Grafana 看板加强,让云服务监控更简略
想要更好、更疾速的出现相干指标图表,阿里云 Prometheus 监控预置 Grafana 组件,预置常见云服务、利用等看板模板,如利用实时监控服务 ARMS、云监控 CMS、日志服务 SLS、阿里云 Elasticsearch 等云服务,提供各种云服务的数据源配置及预置大盘,实现各种可观测数据的对立展现。如容器、音讯队列 Kafka 等,进一步提供 GrafanaPro 大盘,帮忙运维进行更加精细化的指标观测。在预置看板之外,能够通过 Grafana 官网自在减少新插件,增加新的可视化模板以及数据源,进一步满足个性化运维监控需要。
结语
阿里云 Prometheus 与阿里云容器服务无缝集成,提供了 SNMP 设施的指标采集、用户大盘、告警规定等我的项目的一键集成,用户免运维,开箱即用,目前 SNMP 指标采集性能仍在一直演进中,欢送大家试用和提出改良意见。
原文链接
本文为阿里云原创内容,未经容许不得转载。