SNMP:“简单网络管理协议”,用于网络管理的协议。SNMP用于网络设备的管理。SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了“读”操作;管理员需要向设备执行设置操作,所以SNMP提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了“Trap”操作。
关于原理 http://freeloda.blog.51cto.com/2033581/1306743    介绍的特别清楚

安装

sudo apt-get install snmpd snmp snmp-mibs-downloader
安装后可用的命令有好多

1
2
3
4
5
snmp-bridge-mib snmpd snmpinform snmptest snmpvacm
snmpbulkget snmpdelta snmpnetstat snmptranslate snmpwalk
snmpbulkwalk snmpdf snmpset snmptrap
snmpcheck snmpget snmpstatus snmptrapd
snmpconf snmpgetnext snmptable snmpusm

主要使用snmpget 和snmpwalk

测试

先启动服务
sudo service snmpd start
然后snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1
没有意外的话,就会返回完整主机名

配置

配置文件在/etc/snmpd/snmpd.conf
大致可以分为一下部分

AGENT BEHAVIOUR

允许哪些主机读取记录
默认是agentAddress udp:127.0.0.1:161
改为agentAddress udp:161,udp6:[::1]:161,就都可以访问了

SNMPv3 AUTHENTICATION

SNMPv3 的用户认证功能

ACCESS CONTROL

可以访问到哪些内容
默认只有

1
2
3
4
5
6
#运行snmpwalk -v 2c -c public localhost之后,只会输出相关节点下的内容
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
# 你可以改为
view systemonly included .1
#snmpwalk -v 2c -c public localhost输出更多 大概1.1万行

SYSTEM INFORMATION

这个可以自己修改

MIB库

可以使数据更直观
修改/etc/snmp/snmp.conf,注释掉mibs :
改之前
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716
改之后
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB

访问

可以

参考
http://www.ttlsa.com/monitor/snmp-oid/
http://xpleaf.blog.51cto.com/9315560/1757333