liuxでログファイル肥大化の対策
最近、個人で使っている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,\}%')