環境
Ubuntu20.4
記事
rsyslogサービスが起動していれば、/var/logの中にsyslogが作られているはずです。サービスの起動を確認するコマンドはservice --status-all | grep rsyslog。このコマンドを実行して、[ + ] rsyslogと表示されていれば、起動されています。
サービスに関する詳細な情報も表示させたい場合は、systemctl status rsyslogでも確認ができる。syslogが作られる場所は、デフォルトで、ls -l /var/log/syslogとなっている。
rsyslogに関する情報が記載されているファイルは、基本的に、/etc/syslog.confであるが、syslogファイルの出力先のパスが記載されているファイルは、ここではなく、/etc/rsyslog.d/50-default.confに書かれている。
中身を見てみると、.;auth,authpriv.none -/var/log/syslogの行がある。ここのパスを変更すれば、syslogの出力先を変更することができる。設定の左側をセレクタといい、出力するログの種類が設定できる。基本的にデフォルトのままで問題ない。
ls -l /var/log/syslog[2-9].gzをすると、syslogのバックアップローテーションが動いていることが確認できる。ローテーションを作成しているプログラムは、rsyslogではなく、logrotateという別プログラムが動いている。logrotateはデーモンとして常駐して動くタイプのプログラムではなく、ワンショットで1回動いて終わるタイプ。
その設定を確認してみる。systemctl cat logrotate.serviceでlogrotateのユニットファイルの中身を見てみると、Type=oneshotとなっている。そして、ExecStart=/usr/sbin/logrotate /etc/logrotate.confの記述がある。logrotate.serviceから、/usr/sbin/logrotateを動かしていることが分かる。/etc/logrotate.confは引き渡すパラメータ。ユニットファイルの名前と、実際に動かすサービス名が同じ場合、systemctl cat logrotate.serviceは、拡張子を省略して、systemctl cat logrotateだけでもOKとなる。大抵の場合、同じになっているはず。
そして、logrotate.serviceは、logrotate.timerからキックされる。systemctl cat logrotate.timerで中身を参照してみると、OnCalendar=dailyの記載がある。つまり、ログローテーションは毎日実行されているということだ。実際に、ls -l /var/log/syslog[2-9].gzで表示されるバックアップのアーカイブファイルの更新日付は、1日単位になっていることが確認できる。
そして更に、logrotate.timerをキックしているが、timers.tagetで、timers.tagetをキックしているんのが、サービスの大元であるsystemdに行き着く。