dockerのコンテナ内で構築しているメールサーバ(postfix)のmail.logをlogrotateする方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

dockerを使ってmailserver(postfix)を構築しています。
「ホスト側へmail.logをマウントしてホスト側のlogrotateを使ってローテートを実施したい」
と考えるようになってきました。
しかし、logrotateの設定をして、「ハイ。完了。」とはなりませんでした。
ファイル自体はrotateされるけどmail.log.1(古い方のファイル)にlogを出力され続けられると
いう状況になりました。最終的には予想した動きする事ができましたが、
四苦八苦したんで作業内容を纏めておきます。

目次

  1. システム環境
  2. dockerの設定
  3. logrotateの設定
  4. まとめ
  5. 参考

システム環境

  • Host
    • OS:Ubuntu 14.04.3 LTS
    • docker:1.8.3
    • logrotate:3.8.7
  • Container
    • OS:Ubuntu 14.04.3 LTS
    • postfix:2.11.1

dockerの設定

ホスト側にマウントされるファイルを管理するフォルダ(格納先)を作成してきます。

Container起動(docker run)時にコンテナ内で出力されたmail.logをマウント

例)

本環境はhost、Containerともに同一OSなので特段設定はしませんでしたが、バージョンも含め違う
場合は考慮が必要になるかもしれません。

logrotateの設定

/etc/logrotate.d/フォルダ内にコンフィグファイルを作成
* 1日毎にlogrotate
* 30日間保存

冒頭の問題は、コンテナの再起動を行う事で解決しました。(postrotate ~ endscript)
rsyslogをreloadすれば良いだけなので、docker exec (コンテナ名) "reload /etc/init.d/rsyslog"
もうまくいくかもしれませんが、あまり使用率が高いmailserverでもないので再起動しました。

まとめ

ログを肥大化を防ぐ事ができそうです。
またlogwatchをカスタマイズしてレポートをメールに送信なんてのも可能になります。

参考

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください