はじめに
Ubuntu18.04LTSでは、サービスの起動/停止等の管理にsystemd が使われており、従来の
設定ファイル /etc/default/snmptrapd や
起動・停止スクリプト /etc/init.d/snmptrapd は
などは使用されなくなっています。
snmptrapdのログは、
デフォルトでは /var/log/messages に書き出されますが、
/var/log/messages には他の一般的なログも一緒に書き出されるため、
snmptrapd のログを管理するには不便です。
この記事は、Ubuntu18.04(systemd(systemctlコマンド等)利用時)の
snmptrapd のログの出力先を変更する方法を忘備録としてまとめたものです。
snmptrapdのインストール
apt installコマンドで、snmptrapdをインストールします。
root@ubuntu:~# apt install snmptrapd
ログファイルの出力先ディレクトリの作成
snmptrapのログファイルの出力先ディレクトリを作成しておきます。
root@ubuntu:~# mkdir /var/log/snmptrapd
snmptrapd.serviceファイルの編集
root@ubuntu:~# vi /lib/systemd/system/snmptrapd.service
snmptrapd.serviceに、/usr/sbin/snmptrad起動のコマンドが記述されています。
具体的には、シェル変数ExecStartにsnmptrapdを起動させるコマンドが記述されています。
引数の-Lsdを-Lf <出力ログファイル名>に書き換えます。
-Ls <FACILITY>でsyslogのファシリティを指定し、/etc/rsyslog.confで指定したファシリティの出力先を変更する方法もありますが、同じファシリティの他のログも混在するため、今回は-Lfオプションを使用しています。
[Unit]
Description=Simple Network Management Protocol (SNMP) Trap Daemon.
After=network.target
ConditionPathExists=/etc/snmp/snmptrapd.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"
Type=simple
# ExecStart=/usr/sbin/snmptrapd -Lsd -f <--- 変更前(コメントアウト)
ExecStart=/usr/sbin/snmptrapd -Lf /var/log/snmptrapd/snmptrapd.log -f <--- 変更後
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
設定ファイルの再読み込み
service設定ファイルを更新したため、設定ファイルを再読み込みさせます。
root@ubuntu:~# systemctl daemon-reload
自動起動の設定
systemctlコマンドで、snmptrapd.service を自動起動に設定します。
root@ubuntu:~# systemctl enable snmptrapd
STATE が enabledに設定されたか確認します。
root@ubuntu:~# systemctl list-unit-files --type=service | grep snmptrapd
snmptrapd.service enabled
snmptrapdサービスの開始
systemctl start コマンドで、snmptrapd.service を開始させます。
root@ubuntu:~# systemctl start snmptrapd.service
snmptrapdプロセスの状態確認
サービス起動後、-Lfオプションが指定されている状態でsnmptrapのプロセスが起動しているか確認します。
root@ubuntu:~# ps -ef | grep snmptrapd
root 19514 1 0 16:58 ? 00:00:00 /usr/sbin/snmptrapd -Lf /var/log/snmptrapd/snmptrapd.log -f
root 19523 16590 0 16:58 pts/0 00:00:00 grep --color=auto snmptrapd
/var/log/snmptrapd/snmptrapd.logを確認すると、snmptrapd開始メッセージがログに出力されている様子が解ります。
root@ubuntu:/var/log/snmptrapd# cat /var/log/snmptrapd/snmptrapd.log
NET-SNMP version 5.7.3
任意の監視対象機器で、SNMP Trapが発生する操作を行ってみてください。
/var/log/snmptrapd/snmptrapd.log に追記されていくはずです。