liuxでログファイル肥大化の対策
2015年09月09日
最近、個人で使っているVPS(仮想専用サーバ)が、頻繁にダウンするという現象が起きていたのですが、原因がサーバのディスク容量がいっぱいになっていたことでした。
どこがサーバの容量を圧迫している原因になっていたかというと、PlESKのログファイルでした。
PLESKのログファイルは、以下の場所に出力されます。
/var/www/vhosts/ドメイン名/statistics/logs
ここに出力される error_log と access_log が、サーバ標準の設定ではログローテーションの設定がされていなかったため肥大化し続け、気がつけばサーバ容量の大半を圧迫していました。
対策として、以下の2つを行いました。
1.PLESKログのローテーションの設定
PLESKのログのローテーションは、PLESKログイン後、以下から変更することができます。
ウェブサイトとドメイン → ログ → 該当ドメインの「表示する」 → ローテーション
2.ディスク容量が少なくなった時アラート設定
PLESKのログのローテーションが設定されたとしても、ログファイルは他のアプリケーションから知らないうちに生成されていることがあり、気がつけば同様のことが再度起こる可能性があります。
そのため、サーバのディスク容量が一定以下となった場合、管理者へメール通知をする設定を行いました。
これには、以下のブログ記事が参考になりました。
>Linux – ディスク使用量監視&メール通知! – mk-mode BLOG
パーティションの容量を確認して閾値以下だった場合管理者へメールを送信するシェルスクリプトを作成し、cronで実行します。
#!/bin/bash # 閾値(%) LIMIT=90 # メール件名 SUBJECT="[WARN] The capacity of the disk has decreased! - `hostname`" # df コマンドの結果を1行ずつチェック while read LINE do # パーセンテージ取得 PER=`echo $LINE | sed 's/^.* \([0-9]*\)%.*$/\1/'` # 閾値を超えたら df コマンドの内容をメール送信 if [ $PER -gt $LIMIT ]; then df -h | mail -s "$SUBJECT" root break fi done < <(df | grep '[0-9]\{1,\}%')