最近想监控一些服务器和pc指标,偶尔看到snmp协议,学习了一下,顺便记录下来
snmp是simple network manager protocol的简称,即简单网络管理协议,用来管理网络设备的,不只限于交换机,路由器之类的狭义网络设备,服务器,windows电脑其实都可以。
这个协议类似于c-s模型
- 被管理设备是client,这些设备上都安装有一个agent,这个agent是厂家出厂的时候已经安装好了的,只要支持snmp协议的设备,都会有这个agent,现在主流的设备都支持snmp,所以基本不需要关心client这端。
- 管理设备时server端,安装有管理软件的设备叫NMS(network manager system)。
server和client通过snmp协议进行交互。
可以查看b站上华为的这一系列视频,讲的比较详细。
MIB:Management Information Base,管理信息库是TCP/IP网络管理协议标准框架的内容之一,MIB定义了受管设备必须保存的数据项、允许对每个数据项进行的操作及其含义,即管理系统可访问的受管设备的控制和状态信息等数据变量都保存在MIB中。
client端通过mib文件定义了可以被snmp查询的属性,每个属性是一个对象,每个对象都有类型(string,int32之类的),还有一个唯一的OID与之对应。snmp通过OID来检索谢谢信息。
OID:object identifier,对象id,每个对象id指定一个属性或组,这些对象都是结构化的,是一个树形结构,比如企业自定义的mib一般放到enterprises下,enterprises对应的OID是.1.3.4.1.4.1
,点前后是父子关系。
自定义mib文件可以参考:https://www.codeleading.com/article/30973190794/
mib文件定义之后需要使用mib2c工具来生成.c和.h文件,最终编译到snmp agent中,才能被manager访问到。
参考:https://blog.csdn.net/scanf_linux/article/details/99300789