【Webサーバー(Apache)】【Linux】ログが肥大化してえらいことになったのでローテーションを見直す
事の発端はとあるLinuxサーバーのフォルダが
容量ピンチ、とアラートがとんできたこと
調べたらログファイルがマックス近くまで
ディスク容量を圧迫していたことが判明
よくよく考えたらデータを発生させる
ような処理は基本的にはないWebサーバー
なんだから容量増えるのはログが
最有力じゃんという話
ログの場所と内容
容量がいっぱいになったのは
/var
だいたいログは
/var/log
にいることが多い
今回は
/var/log/httpd
のフォルダのログがやたら大きな
容量を誇っていた
ということで
Apacheのログが原因
accsess.logが肥大化していた
ということはアクセスが
多くなるほどこの事象が起きる
可能性が高くなるということか
となると、けっこうよくあるパターン
なのではなかろうか
見てみるとログは1週間1ファイルで
5週間分保管されており
1ファイルあたりの容量は2GB
フォルダの容量が12GBだから
そりゃマックス値近くまでいく計算
ログローテーションの設定
古いログを消すとか圧縮するとか
移動するとかスクリプトを組めば
できるんだろうけど、と思っていたら
ログローテーションの専用の
設定がちゃんとあるらしい
/etc/logrotate.d/httpd
基本的にlogrotate.d配下のファイル名が
サービス名と対応しているみたい
中身:
/var/log/httpd/*.log{ missingok //ログファイルが存在しない場合にエラーを出力しない notifempty //ログファイルが空の場合ローテーションしない sharedscripts //ログファイルを複数指定した場合、それぞれpostrotate、prerotate内のコマンドを実行 delaycompress //1世代目は圧縮されない設定、だがcompressと組み合わせないとうまく動かないらしい postrotate //endscriptとの間に書いたコマンドをローテーション後に実行 /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
1週間ごとのローテーションを
指定しているわけではない
ので、上位設定の
/etc/logrotate.conf
を見ているんだと思うけど
細かいことは忘れてしまった
以下のように必要事項を追記
/var/log/httpd/*.log{ daily //毎日ローテーション rotate 31 //31日分 compress //圧縮する missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
週ごとではなく毎日ログファイルを
作成して圧縮することで
容量不足を解消
導入時はこんなにアクセスが
増えるとは想像していなかったのだろうなぁ