25 février 2009
Limiter les logs snmpd dans syslog
Testé sur Debian 5.0 Lenny et Ubuntu Server 8.04 LTS Hardy
Le démon snmpd est un grand bavard dans sa configuration par défaut sous Debian et Ubuntu, et on se retrouve rapidement avec un syslog envahi de messages à chaque connexion d’un client snmp :
Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:42720 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:55670 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:56655 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:55557 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:46846 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:34805 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:49261 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:35418 Feb 25 10:40:06 monhost snmpd[2404]: Connection from UDP: [x.x.x.x]:35673 |
Pour clouer le bec à l’insolent, il faut aller modifier les options de démarrage SNMPDOPTS du démon dans /etc/default/snmpd :
SNMPDOPTS='-LS4d -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid ' |
L’option qui nous intéresse est -LS4d qui permet de n’écrire dans syslog qu’à partir du niveau warning. Un petit redémarrage du démon et le tour est joué.
A noter que la syntaxe semble différer selon les distributions, pour la vôtre ça sera peut-être -LS 4 d avec des espaces entre les arguments pour obtenir le résultat (erreur de syntaxe sous Debian).
Un extrait de la man page de snmpcmd sur les options de journalisation
(pour les niveaux d’alerte, pas pour la syntaxe des options, c’est différent de SNMPDOPTS)
The mechanism and destination to use for logging of warning and error messages can be controlled by passing various parameters to the -L flag. -Le Log messages to the standard error stream. -Lf FILE Log messages to the specified file. -Lo Log messages to the standard output stream. -Ls FACILITY Log messages via syslog, using the specified facility ('d' for LOG_DAEMON, 'u' for LOG_USER, or '0'-'7' for LOG_LOCAL0 through LOG_LOCAL7). There are also "upper case" versions of each of these options, which allow the corresponding logging mechanism to be restricted to certain priorities of message. Using standard error logging as an example: -LE pri will log messages of priority 'pri' and above to standard error. -LE p1-p2 will log messages with priority between 'p1' and 'p2' (inclusive) to standard error. For -LF and -LS the priority specification comes before the file or facility token. The priorities recognised are: 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, and 7 or d for LOG_DEBUG. Normal output is (or will be!) logged at a priority level of LOG_NOTICE |
Ca marche impec !
Ça a réglé mon problème sous Debian Lenny. Merci!
Correction : ça marche, petite confusion entre le man snmpd et le man snmpcmd (ci-dessus), c’est bien -LS4d…
Pour le S majuscule, ça ne marche pas : c’est en minuscule d’après le man. De plus, j’ai beau faire, ça ne réduit pas du tout les log (pourtant, le ps -edf|grep -ie snmp retourne « /usr/sbin/snmpd -Ls4d -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid »).
Il doit donc manquer une information quelque part…