监控之snmpd 服务

监控离不开数据采集,经常使用的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 服务安装

  1. yum install net-snmp* 

2.2 编辑snmpd.conf 配置文档

  1. vim /etc/snmp/snmpd.conf 
  2.  
  3. 41行 1将default 改为监控服务器ip;2 将public 改成复杂些的识别的字符串 
  4. com2sec notConfigUser  10.0.100.70      dongnan 
  5.  
  6. 62行 1将systemview 改为all,供所有snmp 访问权限 
  7. access  notConfigGroup ""      any       noauth    exact  all none none 
  8.  
  9. 85行 将#注释符号去掉 
  10. view all    included  .1                               80 

2.3 启动 snmpd 服务

  1. /etc/init.d/snmpd start 

2.4 验证snmpd 服务

//snmpd 使用 tcp/udp 161 端口

  1. grep 'Simple Net Mgmt Proto' /etc/services  
  2. snmp        161/tcp             # Simple Net Mgmt Proto 
  3. snmp        161/udp             # Simple Net Mgmt Proto 
  1. lsof -i :161 
  2. COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME 
  3. snmpd   3734 root   11u  IPv4  13174       UDP *:snmp  
  4.  
  5. ps -ef | grep 'snmpd' 
  6. 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 信息,这样会影响我们察看系统日志,所以我们需要更改下!

  1. Mar  1 09:55:01 monitor snmpd[3734]: Connection from UDP: [127.0.0.1]:37535  
  2. Mar  1 09:55:01 monitor snmpd[3734]: Received SNMP packet(s) from UDP: [127.0.0.1]:37535  
  3. Mar  1 09:55:01 monitor snmpd[3734]: Connection from UDP: [127.0.0.1]:47836  
  4. Mar  1 09:55:01 monitor snmpd[3734]: Received SNMP packet(s) from UDP: [127.0.0.1]:47836  

//注释原有的OPTINOS,添加下面的一行,重启snmpd 服务即可。

  1. vim /etc/init.d/snmpd
  2.  
  3. #OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a" 
  4. OPTIONS="-LS 4 d -p /var/run/snmpd.pid -a" 
  5. /etc/init.d/snmpd restart
  6. Stopping snmpd: [ OK ]
  7. Starting snmpd: [ OK ]

 2.6 使用snmpwalk 命令验证

  1. snmpwalk -v 1 -c dongnan 192.168.57.82 
  2. snmpwalk -v 2c -c dongnan 192.168.57.71  
  3. -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

原文地址:https://www.cnblogs.com/wayne173/p/4342288.html