RTX1210のログをlogrotateで管理する

きっかけ

前に書いた記事ですが、数日前に再発しました。
今回はzabbixでの通知のおかげで発生直後に障害を自分が認識し、電源のオフオンで復旧しました。
最終的には復旧まで自動でやりたいんだよなぁ・・・


何かエラーが発生した時に、その原因を究明する時に役立つのが各種ログですが安いルーターだと大したログ出さなかったり短時間のログしか出さなかったりなど。今までのwebやメール鯖の各種エラーや、ネットワーク構築の時の通信エラーもログを見て原因を探って解決してきました。今回ログを確認するのは我が家の基幹ルーターであるRTX1210

実現したいこと

RTX1210のログをlogrotateで管理するため・・・・
①ログを自宅内の鯖に送信
②鯖にて1日1つのログファイルを生成
③容量削減のために1日前のファイルは圧縮
④10日間分の記録を保持
⑤メインで使っているWin10PCからもログが確認できるようにする

準備

イントラネットネット内にある鯖はUbuntu 22.04.1 LTSで構築していますが、まずログの保管場所を決めます。
通常のログは基本的に/var/log/内に保管されています。我が家では宅内鯖のラズパイにSSDを接続していて、NASとしても利用しているのでこちらに保存することとしました。
SSDなどの外部デバイスは/mnt/配下としていて、我が家の場合は/mnt/File_Server/NAS/syslog_RTX1210としてここにRTX1210のログファイルを保存することとしました。同じように構築される場合は適宜パスは変更してくださいな。

サーバー側の用意

まずはRTX1210から送られてくるログを鯖側で受け付ける準備として/etc/rsyslog.confの最後尾を編集

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

これによって、/etc/rsyslog.d/内にある.confファイルが有効化されるためRTX1210の設定を作成します。
今回はrtx1210.confとして以下のように設定

cd /etc/rsyslog.d
sudo nano rtx1210.conf
local0.* /mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log

Ctrl + Oでファイル名rtx1210.confとして保存

ルーター側の設定

RTX1210のconfigに以下を追記します

syslog host 192.168.2.210
syslog facility local0
syslog notice on

192.168.2.210は自宅鯖に設定しているIPアドレスとなります。
2行目のlocal0ですが、local1でもlocal2でも問題ありません。local0以外を指定する場合はrsyslog.d内のrtx1210.confのlocal〇を編集する必要があります。

サーバー側の設定

ここからログローテーションの設定を進めていきます。
まずは元となる空のログファイルを作成

cd /mnt/File_Server/NAS/syslog_RTX1210
sudo nano rtx1210.log

Ctrl + Oでファイル名rtx1210.logとして保存
ログローテーションの核となる設定は以下のように設定

sudo nano /etc/logrotate.d/rtx1210log

以下のように記述します

/mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log {
    daily
    rotate 10
    ifempty
    dateext
    create 755 root adm
    sharedscripts
    postrotate
    kill -HUP `cat /var/run/rsyslogd.pid`
    /bin/mv /mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log-`date '+%Y%m%d'` /mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log-`date '+%Y%m%d' -d '1days ago'`
        /bin/gzip /mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log-`date '+%Y%m%d' -d '1days ago'`
    endscript
}

Ctrl + Oでファイル名rtx1210logとして保存します。
記述しているスクリプトの1つkill -HUP cat /var/run/rsyslogd.pidですが、ubuntuのデフォルトではrsyslogd.pidが存在しません。このためrsyslogの設定を変更します。

sudo nano /lib/systemd/system/rsyslog.service

デフォルトの状態から1つの文字列を削除します

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n -iNONE ※ここの-iNONEを削除する
StandardOutput=null
Restart=on-failure
StartLimitBurst=0
# Increase the default a bit in order to allow many simultaneous
# files to be monitored, we might need a lot of fds.
LimitNOFILE=16384

Ctrl + Oで上書き保存。
これで設定は完了ですが、最後にsyslogのシステムを再起動します。

sudo systemctl restart rsyslog

動作確認

以下のコマンドでドライランさせます。

sudo logrotate -d /etc/logrotate.d/rtx1210log

出力結果↓

WARNING: logrotate in debug mode does nothing except printing debug messages!  Consider using verbose mode (-v) instead if this is not what you want.

reading config file /etc/logrotate.d/rtx1210log
Reading state from file: /var/lib/logrotate/status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state

Handling 1 logs

rotating pattern: /mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log  after 1 days (10 rotations)
empty log files are rotated, old logs are removed
considering log /mnt/File_Server/NAS/syslog_RTX1210/rtx1210.log
  Now: 2022-10-11 20:08
  Last rotated at 2022-10-11 00:00
  log does not need rotating (log has been rotated at 2022-10-11 00:00, which is less than a day ago)
not running postrotate script, since no logs were rotated

log does not need rotatingとなっていますが、-fを付けることで強制的にログローテートを実施可能

sudo /usr/sbin/logrotate -f /etc/logrotate.d/rtx1210log

数日経ったら以下のコマンドでリストを確認

ls -laht /mnt/File_Server/NAS/syslog_RTX1210

無事にローテトされて、過去の分は圧縮されています。

-rwxr-xr-x  1 root       adm     13M Oct 10 19:42 rtx1210.log
-rwxr-xr-x  1 root       adm    1.6M Oct 10 00:00 rtx1210.log-20221009.gz
-rwxr-xr-x  1 root       adm    1.2M Oct  9 00:00 rtx1210.log-20221008.gz
-rwxr-xr-x  1 root       adm    304K Oct  8 00:00 rtx1210.log-20221007.gz

やったね!!!!!

自分のデスクトップPCからsyslog_RTX1210のフォルダにアクセスしても確認できので、じっくりとログの解析が可能です。

参考になったサイト

基本設定のままだとログファイルの日付が1日ズレるのでこれの改善のために参考になったサイト↓
https://qiita.com/piggydev/items/b7adb2a68289285f06b6

rsyslogd.pidを出現させる方法↓
https://askubuntu.com/questions/1231395/rsyslog-stopped-creating-pid-file-after-upgrade-from-18-04-to-20-04

高木
  • 高木

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です