SNMP协议介绍


snmp, 全称Simple Network Management Protocol. 目前应用非常广泛的协议, 绝大多数都采用UDP协议实现, 多用于网络设备,以及很多IoT设备都提供了对应的SNMP支持. 多用来方便外部采集设备的内部状态比如CPU, 内存啥的.





grafana snmp面板_运维



重要概念

基础概念

SNMP Agent: 可以理解为一个个的设备, 可以有各种各样的状态, 而且他们提供了可以通过SNMP来访问到这些状态的方式.


SNMP Manager: 另外一个总的服务, 负责来管理这些SNMP Agent的状态, 采集信息, 设置一些配置, 收集SNMP Agent上报的告警.



下面介绍下SNMP 协议:


SNMP Agent内部是通过一个树形结构来管理的:



grafana snmp面板_运维_02



1.3.6.1.2.1.1.1.0  -- 系统描述, 1.3.6.1.2.1.1.5.0 -- 系统名称


MIB: 这样的一个树是通过MIB这种特殊的文件来定义的.



协议相关


snmp协议有v1,v2c,v3等3个版本.


v1 -> v2c -> v3 


v1: 


  • 第一个版本
  • 采用Community来认证, 后面会讲到community是啥.
  • 支持简单的GET, SET, GET-NEXT, TRAP



v2c:


  • 目前应用最多的版本
  • 该版本在v1的基础上主要改进了性能, 和提供更加丰富的OID支持.
  • 提供了GETBULK, 相比于GETNEXT有更快的性能



v3:


  • 该版本在v2的基础上主要改进了安全性
  • 提供了各种的认证方式



snmp agent可以接收和发送各种各样的消息 (PDU- Protocol data unit), 下面的表格将详细解释常见消息和用途:



grafana snmp面板_字符串_03




常见的操作


真正对运维或者开发有用的主要是实现2个动作: 


GET: 获取某个节点的值, 比如获取当前的CPU 或者系统时间


WALK: 查看某个节点下面的所有子节点的值, 相当于遍历一个树的子树.





这篇文章就介绍这么多, 后面我们会接着介绍 如何在windows和linux中安装和使用SNMP服务


SNMP系列目录