1.版本介绍
- V1:仅通过comminuty确定是否可以通信,属于同一个comminuty即可;包含三类:read、read-write、trap
- V2:仍以comminuty,但是功能强化;由于是基于社区字符串的类型(community-string-based),因此也叫
v2c
- V3:增强了认证机制,数据传输上增强了安全性
2.MIB库
- 管理信息库:Management Information Base 倒置树状结构 对象标识符 OID:1.3.6.1.2.1.1.0
- 为了方便识别,对MIB中的每一个节点都取一个名字且都对应一个OID 总结:MIB就是将大多数被
监控对象名称和OID之间的映射表
- 没有MIB就只能用OID来监控,因此引用了MIB;且只有提供了哪些MIB库才能对哪些内容发起监控,即便有OID也不行
- 因此,agent接受到NMS发来的请求后,到MIB库中查询,然后才知道NMS想要查询的信息
- 目前所有设备至少会提供一个标准的MIB库:MIB-Ⅱ
- 特殊设备可以根据各自厂商的需要去申请、开发自己的MIB库,类似DNS域名解析,用于解析NMS端的请求信息
- 常见标准OID:internet:1.3.6.1;mib-2:1.3.6.1.2.1 问题:如何查看MIB库内容?walk?
3.可实现监控哪些信息
- 错误管理 Fault Management
- 配置管理 Configuration Management
- 记账管理 Accounting Management
- 性能管理 Performance Management
- 安全管理 Security Management
4.SNMP端口
被监控端需要打开UDP/161
端口,监控端要打开UDP/162
端口(如果需要trap时)
5.SNMP Communities
一般默认启用两个community:public(r读) 和 private(rw读写)
6.MIB-Ⅱ
其中最常用的对象有:system、interfaces、tcp
7.SNMP操作/报文
- get:获取一个指定的OID的状态信息
- getnext:获取指定节点下的所有子节点的信息(仅支持叶子节点上一级节点)
- getbulk(SNMPv2和SNMPv3):同getnext,只是对节点位置无限制,该节点下可以有多级节点
- set:发起控制指令,如关机操作
- getresponse:获取响应
- trap:
- …
8.SNMP安装包说明
- net-snmp:snmp的Agent,被监控端用到的包
- net-snmp-utils:监控端用到的命令所在
- 因此,如果仅是被监控,直接用net-snmp即可;如果要监控别人,用net-snmp-utils即可;但如果要用trap则监控端(NMS端)需要装net-snmp;
- 被监控端:仅需要安装net-snmp包
- 监控端:不需要trap功能时,仅需要net-snmp-utils即可,若需要trap,则还需要安装net-snmp包
- 安装agent及控制端命令集:yum install -y net-snmp net-snmp-utils
- 查看已安装包列表:rpm -qa | grep snmp
- 查看服务相关文件列表:rpm -qal | grep snmp
- mib库文件路径:/usr/share/snmp/mibs/
- 标准的mib库文件:/usr/share/snmp/mibs/SNMPv2-MIB.txt
9.基本/常用命令
- 查看基本信息,开启了哪些mib库等
snmpwalk -v 2c -c public localhost
snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.1
- 查看系统启动时间
[root@localhost snmp]# snmpget -v 2c -c public localhost HOST-RESOURCES-MIB::hrSystemUptime.0
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (160743) 0:26:47.43
10.配置文件说明
- 部分OID说明
The host OID:1.3.6.1.2.1.25
hrSystem:1.3.6.1.2.1.25.1
hrStorage:1.3.6.1.2.1.25.2
hrDevice:1.3.6.1.2.1.25.3
- 配置文件中,访问策略的配置,source为default默认所有主机都能访问,因此需要先注释掉,然后添加允许来访问本机的IP或IP段;同时,还能将community的默认public修改为其他字符串
- 配置文件中,OID访问权限的配置,可以手动添加一条记录,带有想要获取信息的OID值(对应subtree项)即可