用springboot开发一个snmp采集程序,并最终生成拓扑图(三)

这里记录一些关于snmp采集的概念

snmp protocol

snmp一般是udp的,simple network manager protocol, 监听在161端口

手动运行形式

一般手动运行的形式是 snmpwalk -v 2c -c public IPADDR OID

你需要首先安装好snmpwalk

OID

OID, 这个相当于一个key,用来对应要采集的目标,返回的value一般就是我们需要的值

OID可以翻译成一些文字的东西, 比如 Sysdescr ... 如何翻译的?这里又有一个叫"mib"的东西,它看起来像是一个txt文件,里面记录了它的名称,描述等,

如何知道这个OID?

如果你在linux下,可以用 apt install mib-download 之类的命令安装好这些mib, 另外还有许多企业私有mib, 比如华为,h3c, 瑞捷,迪普。。。 买设备的时候可以找厂家,另外可以去厂家网站上找,幸运的话

一般采集什么样的指标

最普遍的 设备的状态相关信息, 还有最重要的网口信息 另外还可能会关注组网配置,比如 vlan, LINKAGG等

CPU,内存信息

一般有一个common的oid, 这个可以查下 1.3.6.1.2.1下

但是,不同品牌设备,甚至同一品牌不同型号设备,采集cpu , mem的方式可能都是不同的,这一点很讨厌

它们往往隐藏在 1.3.6.1.4.1下面

我研究过manageEngine, prometheus snmp_exporter, librenms, zabbix的模板或者代码,可以知道这里面是分得很细的,可以多看看librenms的代码,尽管是php的,还是很好懂的,何况还可以求助于当前的代码AI

网口相关

一般这个都是用标准的mib,不过也有一些小问题

32bit/64bit

ifInOctets/ifOutOctets和ifHCInOctets/ifHCOutOctets

原来这个协议中,只有32位的字段,但是后来发现这个不够用,所以又添加了一些64位字段,所以交换机采集时,你需要注意有的时候要用这个64位的字段代替32位的,否则会出现一些奇怪的现象

counter值要转速率(rate)

ifInOctets/ifOutOctets 代表网口进出流量,首先它们是一个counter值,即计数值,它只会一直增长,而我们最关心的其实是网口速率, 是一个统计后算差值再求平均的过程(速率)

在prometheus中,我们可以用rate/ irate来自动做这个事, 但是如果你的DB是别的, 比如用ES/mysql/pg... 你就需要自己算好了

snmpwalk与snmpget

采集的性能问题

bulk肯定会比单个get要快,但是并不是所有地方都需要用的

比如网口采集,可以用一个简单的walk,但是其实这其中大部分指标都不会变化,最关心的指标只是20个中的6个左右,全量采集是比较浪费交换机cpu的

LLDP

LLDP可以直接的提供网口关联设备的查询,结果分散在多处,组合起来会显示一份比较全的记录,用户一般都比较认可这个

三表合成进行网口-ip-mac关联

fwdtable, arpTable, interfacetabl 可以组合,进行一些初步的网口关联IP查询,在我没有弄清LLDP前,这个东西也能给出一些结果

先写到这,有一些遗漏后面再补上

相关推荐
张彦峰ZYF15 分钟前
功能齐了不等于能上线:智能工单系统的AI回归测试、安全防护、成本可观测与CI/CD生产部署
后端·企业智能工单系统·评测线·安全线·成本线·部署线
Rain的Java大神之路18 分钟前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
量化分析码农31 分钟前
【Python量化波动率实战 05】你的组合真的分散了吗:滚动相关与分散化收益
后端
IT_陈寒1 小时前
Vue这个奇葩的响应式问题让我加班到凌晨
前端·人工智能·后端
脚本自动化开发8 小时前
存储涨价后,磐镭WO5迷你主机值得买吗
后端
一只爱撸猫的程序猿11 小时前
我看着一个 AI 引擎在 14 天里,从"记忆"走进了"搜索"
人工智能·后端·架构
陈随易13 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
卷无止境14 小时前
RAGFlow 项目全景报告:从文档解析引擎到 Agent 原生数据库
后端·python
小Z先生15 小时前
我用 Go + 系统 WebView 写了个纯本地 Postman:不装 Electron、不连云端
后端·github
IT_陈寒15 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端