监控离不开数据采集,经常使用的Mrtg ,Cacti,Zabbix,等等监控软件都是通过snmp 协议进行数据采集的!
1 什么是snmp 协议?
简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。它由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema),和一组资料物件。
2 linux 系统下 snmp 服务配置
2.1 snmpd 服务安装
- yum install net-snmp*
2.2 编辑snmpd.conf 配置文档
- vim /etc/snmp/snmpd.conf
- 41行 1将default 改为监控服务器ip;2 将public 改成复杂些的识别的字符串
- com2sec notConfigUser 10.0.100.70 dongnan
- 62行 1将systemview 改为all,供所有snmp 访问权限
- access notConfigGroup "" any noauth exact all none none
- 85行 将#注释符号去掉
- view all included .1 80
2.3 启动 snmpd 服务
- /etc/init.d/snmpd start
2.4 验证snmpd 服务
//snmpd 使用 tcp/udp 161 端口
- grep 'Simple Net Mgmt Proto' /etc/services
- snmp 161/tcp # Simple Net Mgmt Proto
- snmp 161/udp # Simple Net Mgmt Proto
- lsof -i :161
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- snmpd 3734 root 11u IPv4 13174 UDP *:snmp
- ps -ef | grep 'snmpd'
- root 3734 1 0 09:34 ? 00:00:00 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
2.5 修改snmpd 日志级别
//以上操作能够满足snmpd 服务正常使用,不过snmpd 默认日志级别将会在/var/log/message 写入大量snmp 信息,这样会影响我们察看系统日志,所以我们需要更改下!
- Mar 1 09:55:01 monitor snmpd[3734]: Connection from UDP: [127.0.0.1]:37535
- Mar 1 09:55:01 monitor snmpd[3734]: Received SNMP packet(s) from UDP: [127.0.0.1]:37535
- Mar 1 09:55:01 monitor snmpd[3734]: Connection from UDP: [127.0.0.1]:47836
- Mar 1 09:55:01 monitor snmpd[3734]: Received SNMP packet(s) from UDP: [127.0.0.1]:47836
//注释原有的OPTINOS,添加下面的一行,重启snmpd 服务即可。
- vim /etc/init.d/snmpd
- #OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a"
- OPTIONS="-LS 4 d -p /var/run/snmpd.pid -a"
- /etc/init.d/snmpd restart
- Stopping snmpd: [ OK ]
- Starting snmpd: [ OK ]
2.6 使用snmpwalk 命令验证
- snmpwalk -v 1 -c dongnan 192.168.57.82
- snmpwalk -v 2c -c dongnan 192.168.57.71
- -v是指版本,-c 是指密钥,获取到系统信息则正常!
linux服务器开启 SSHD 服务后,在/var/log/messages和终端中经常有大量snmpd 信息 如下:
snmpd[3099]: Received SNMP packet(s) from UDP: [192.168.2.251]:57919
snmpd[3099]: Connection from UDP: [192.168.2.251]:59157
snmpd[3099]: Received SNMP packet(s) from UDP: [192.168.2.251]:59157
snmpd[3099]: Connection from UDP: [192.168.2.251]:40188
snmpd[3099]: Received SNMP packet(s) from UDP: [192.168.2.251]:40188
经查:是由于 cacti 每5分钟获取信息的日志。
只要关闭 snmpd 日志即可。
修改 snmpd 启动脚本
vi /etc/init.d/snmpd
OPTIONS=”-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a”
修改为:
OPTIONS=”-Ls3d -Lf /dev/null -p /var/run/snmpd.pid”
snmpd日志等级的定义:
0 或 ! —- LOG_EMERG,
1 或 a —- LOG_ALERT,
2 或 c —- LOG_CRIT,
3 或 e —- LOG_ERR,
4 或 w —- LOG_WARNING,
5 或 n —- LOG_NOTICE,
6 或 i —- LOG_INFO, and
7 或 d —- LOG_DEBUG.
重启 snmpd 即可。
以上是网上的资料,最好把上边的改为以下效果,将-Ls3d去掉
OPTIONS=”-Lf /dev/null -p /var/run/snmpd.pid”
否则,服务器过段时间之后,日志中会有如下的信息提示:
last message repeated N times