OPS Notes By 枯木

RHEL6修改snmpd日志输出

| Comments

需求和现象

默认安装启动的snmp,会把日志记录在系统日志/var/log/messages中。频繁记录日志到messages,导致messages的日志输出都被snmp的相关信息占满,不便于其它问题的排查。另外,频繁的写日志对性能也不是很好,因此需要修改相关的配置。

解决方法

第一反应就是想到snmp的配置文件,但是发现配置文件/etc/snmp/snmpd.conf中没有关于log的日志定义,ps -ef | grep snmp[d] 得到如下结果

1
2
# ps -ef | grep snmp[d]
root     59108     1  0 22:12 ?        00:00:00 /usr/sbin/snmpd -LS0-6d -Lf /dev/null -p /var/run/snmpd.pid

以上启动命令中就有关于日志的选项,关于snmp日志的警告级别如下

  • 0 or ! for LOG_EMERG,
  • 1 or a for LOG_ALERT,
  • 2 or c for LOG_CRIT,
  • 3 or e for LOG_ERR,
  • 4 or w for LOG_WARNING,
  • 5 or n for LOG_NOTICE,
  • 6 or i for LOG_INFO,
  • 7 or d for LOG_DEBUG.

默认的时0-6级别的日志都会被记录,查看/etc/init.d/snmpd启动文件,有以下定义

1
2
3
4
5
# grep 'OPTIONS=' -A3 /etc/init.d/snmpd 
OPTIONS="-LS0-6d -Lf /dev/null -p /var/run/snmpd.pid"
if [ -e /etc/sysconfig/snmpd ]; then
  . /etc/sysconfig/snmpd
fi

snmpd启动文件定义了OPTIONS,启动文件中提到了/etc/sysconfig/snmpd,查看内容默认如下

1
2
3
# cat /etc/sysconfig/snmpd 
# snmpd command line options
# OPTIONS="-LS0-6d -Lf /dev/null -p /var/run/snmpd.pid"

因为/etc/sysconfig/snmpd优先级高于OPTIONS,所以可以直接修改配置文件即可,取消OPTIONS注释,修改如下

1
2
3
# cat /etc/sysconfig/snmpd 
# snmpd command line options
 OPTIONS="-LS0-3d -Lf /dev/null -p /var/run/snmpd.pid" #只记录0-3级别的日志即可

当然也可以直接修改/etc/init.d/snmpd启动文件中的OPTIONS

最后重启snmpd,使修改生效,就会发现messages的snmp的信息就相对少很多了,完成实际的需求。

参考文档:dyndns.org

–EOF–

Comments