Monit ログの出力先変更する方法
Monitのデフォルト設定では、ログの出力先が syslog(/var/log/messages や /var/log/secure)に指定されているので、messagesとかをログ監視しているとmonitのログを拾ってしまうケースあります。
このログの出力先を「/var/log/monit.log」に変更する方法を紹介します。
monit設定ファイルの編集
設定ファイル(/etc/monitrc)を編集します。
ログの出力先は標準ではsyslogに出力されているので「set log syslog」はコメントアウトして、「set log /var/log/monit.log」をその下に追加します
$ sudo vi /etc/monitrc #set log syslog コメントアウトする set log /var/log/monit.log
ログファイルの作成と権限設定
monitが起動時にログファイルを書き込めるように、再起動する前にログファイルを作成します。また、適切な権限を付与します
$ sudo touch /var/log/monit.log $ sudo chmod 600 /var/log/monit.log
設定の反映
設定に構文エラーがないか確認してから、monitを再起動します。
# 設定ファイルのチェック $ sudo monit -t # 反映 $ sudo systemctl restart monit
ログローテーションの設定
ログファイルを独自に作成した場合、ログローテーションを設定しないとログファイルサイズが肥大化し続けてしまいます。logrotate の設定を追加してログローテーション実行するようにします
/etc/logrotate.d/monit というファイルを新規作成し、以下の内容を記述してください。
$ sudo vim /etc/logrotate.d/monit
/var/log/monit.log {
weekly
rotate 4
missingok
notifempty
sharedscripts
postrotate
/bin/systemctl reload monit > /dev/null 2>&1 || true
endscript
}
- weekly: 1週間ごとに新しくします。(messages と同じ頻度)
- rotate 4: 過去4回分(約1ヶ月分)をバックアップとして残します。
- sharedscripts: 複数のログファイルを指定した場合でも、postrotate の実行を1回にまとめます(標準設定に多い記述です)。
ログローテーションの設定ファイルを作成すると、正しく動作するか以下のコマンドでテスト実行(ドライラン)が可能です。エラーが出なければ成功です。
$ sudo logrotate -dv /etc/logrotate.d/monit

