Decrease snmpd logging level on Ubuntu 18.04
I recently updated some servers from Ubuntu 16.04 to 18.04, and found that
the snmpd
daemon was generating way too many log entries
in /var/log/syslog
- one for every SNMP query coming from our monitoring system.
In older Ubuntus I had edited /etc/defaults/snmpd
to change the SNMPDOPTS
line
to have a different -Ls
parameter, but it seems that on the new Ubuntu, the
systemd service for snmp doesn't use that defaults
file at all. A comment
on this serverfault question
gave me a clue on how to fix it in systemd - I thought I'd elaborate here.
If you run
systemctl cat snmpd.service
You see the current service file:
# /lib/systemd/system/snmpd.service [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=network.target ConditionPathExists=/etc/snmp/snmpd.conf [Service] Environment="MIBSDIR=/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp" Environment="MIBS=" Type=simple ExecStartPre=/bin/mkdir -p /var/run/agentx ExecStart=/usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
I wanted to override the ExecStart line with something different. To do that, run
systemctl edit snmpd.service
This brings up your default editor with a blank file. I entered these new lines:
# Override default "-Lsd" paramter to "-LSwd" to decrease logging level [Service] ExecStart= ExecStart=/usr/sbin/snmpd -LSwd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f
The first ExecStart=
line is a bit odd, without it you get an error:
snmpd.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
so the first line 'clears' the setting before processing your own version.
Save your file (systemctl edit
stores it as /etc/systemd/system/snmpd.service.d/override.conf
), and then run
service snmpd restart
to have take effect. If you re-run systemctl cat snmpd.service
you should now see:
# /lib/systemd/system/snmpd.service [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=network.target ConditionPathExists=/etc/snmp/snmpd.conf [Service] Environment="MIBSDIR=/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp" Environment="MIBS=" Type=simple ExecStartPre=/bin/mkdir -p /var/run/agentx ExecStart=/usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target # /etc/systemd/system/snmpd.service.d/override.conf # Override default "-Lsd" paramter to "-LSwd" to decrease logging level [Service] ExecStart= ExecStart=/usr/sbin/snmpd -LSwd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f
Which is a combination of the default service along with your override.
If you have other servers you want to copy your /etc/systemd/system/snmpd.service.d/override.conf
file to, you need
to run
systemctl daemon-reload
service snmpd restart
to have it take effect.