一、基本概念
SNMP全称Simple Network Management Protocol,这是一种基于Internet的标准协议。SNMP是用来管理许多不同类型的网络设备,如服务器,路由器,交换机,打印机等。SNMP使用管理信息库MIB(Management Information Base),它是包含管理信息的数据库。MIB定义了被监视的设备的属性集合。SNMP支持两个版本:SNMPv1和SNMPv2c。SNMPv3相比前两者加强了安全性,使用了加密和认证等机制,但SNMPv3比SNMPv1和SNMPv2c更加复杂。
二、使用snmpwalk命令获取设备信息
snmpwalk命令是snmp协议的一个工具,主要用于获取SNMP设备上一些可读的信息。它通过向设备发送请求获取所需信息,并将信息以树形结构返回。最基本的snmpwalk命令格式为:
snmpwalk -v [version] -c [community string] [target device IP address] [OID]
[version]:SNMP版本(SNMPv1/v2c/v3)
[community string]:共同体密码,类似于密码,能够访问SNMP设备的权限
[target device IP address]:目标设备IP地址
[OID]:对象标识符,用于获取设备信息的标识符
例如,我们可以使用以下命令获取本地设备的系统描述信息:
snmpwalk -v 2c -c public localhost system.sysDescr.0
其中,-v 2c表示使用SNMPv2c版本,-c public表示使用默认的共同体字符串“public”,localhost表示目标设备为本地设备,system.sysDescr.0表示要获取的是系统描述信息。
三、获取更多设备信息
除了系统描述信息,我们还可以使用snmpwalk命令获取更多的设备信息。以下是一些示例:
1、获取CPU利用率信息:
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.11
其中的.1.3.6.1.4.1.2021.11是CPU利用率的OID。
2、获取内存信息:
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4
其中的.1.3.6.1.4.1.2021.4是内存信息的OID。
3、获取网络接口信息:
snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.2
其中的.1.3.6.1.2.1.2是网络接口信息的OID。
四、结合awk命令使用snmpwalk
有时候我们只需要一部分设备信息,此时可以结合awk命令来实现过滤。例如,以下命令列出了本地设备的所有进程ID和进程名称:
snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.25.4.2.1.1 | awk -F "=" '{print $2}' && snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.25.4.2.1.2 | awk -F ":" '{print $2}' | awk -F "STRING: " '{print $2}'
其中,1.3.6.1.2.1.25.4.2.1.1表示进程ID的OID,1.3.6.1.2.1.25.4.2.1.2表示进程名称的OID。awk -F "=" '{print $2}'表示以“=”为分隔符输出第二个字段(即进程ID),awk -F ":" '{print $2}'表示以“:”为分隔符输出第二个字段(即进程名称),awk -F "STRING: " '{print $2}'表示以“STRING: ”为分隔符输出第二个字段(即进程名称结果中的额外字符串)。
五、结合定时任务监控设备
我们可以使用定时任务结合snmpwalk命令监控设备,例如,以下定时任务每5分钟获取本地设备的CPU利用率信息并输出到日志文件中:
*/5 * * * * /usr/bin/snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.11 >> /var/log/cpu_utilization.log
其中,“*/5 * * * *”表示每5分钟执行一次命令。将获取到的CPU利用率信息追加到/var/log/cpu_utilization.log日志文件中。
六、结合Zabbix监控设备
我们还可以结合Zabbix进行设备监控。Zabbix是一个开源的企业级分布式监控系统,使用Zabbix可以进行网络设备监控、服务监控、性能监控等。以下是使用snmpwalk和Zabbix结合监控本地设备CPU利用率的示例:
1、在Zabbix服务器上安装SNMP MIB文件
SNMP MIB文件包含了各种设备的OID信息,安装MIB文件后Zabbix就能够理解并解析这些OID。MIB文件的安装方法可以查阅相关文档。
2、在Zabbix服务器上设置SNMP监控项
在Zabbix服务器上设置SNMP监控项,设置方法可以参考Zabbix官方文档。在设置项时需要输入OID,例如获取CPU利用率信息的OID是.1.3.6.1.4.1.2021.11。设置OID时可以使用snmpwalk命令查询。
3、在Zabbix服务器上设置触发器
设置触发器可以在设备达到一定的条件时触发报警。例如,当CPU利用率超过80%时发送邮件报警。
七、小结
本文介绍了如何使用snmpwalk命令进行SNMP网络设备的管理和监控。通过使用snmpwalk命令,我们可以获取设备的系统信息、CPU利用率、内存信息、网络接口信息等。我们还可以结合awk命令、定时任务、Zabbix等工具来实现设备信息的过滤、定期获取、报警等功能。