systemdを採用しているdistroのシステムログがjournaldを一元管理してくれる。
ただし、journaldにエラーログを通知する機能が持っていないため監視通知のし掛けが必要で す。
- journaldログをsyslogに転送し、従来のsyslog監視方法を適用する
- 独自のスクリプトで実現する
自宅のサーバは下記スクリプトでエラーログの通知機能を実現しています。
/etc/cron.hourly/journal_error
#!/bin/sh # 一時以内のエラーログを標準出力と/var/log/journal_errorファイルへ出力する journalctl -o short-iso -p err --since -1hours 2>/dev/null | tail -n+2 | tee -a /var/log/journal_error
journalctl コマンドを駆使して1時間以内のエラーログを標準出力に出力するスクリプト。
これをcronの時間単位ジョブディレクトリ /etc/cron.hourly
に登録する。
あとはcronのメール通知機能を有効化するだけです。
cronのメール通知先は /etc/cron.d/0hourly
の MAILTO
項目にて指定する。
$ cat /etc/cron.d/0hourly # Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=<<メールの送信先をここに書く>> 1 * * * * root run-parts /etc/cron.hourly