VPNサーバー(Softether)のログ肥大化を対処

先日、VPNサーバーの容量が少なくなってきたとZabbixからの通知を受けて確認してみたら、ログファイルが溜まりすぎて容量を圧迫していました。

Softetherでは、security_log,packet_log,server_log内にログが溜まっていくので、これらの配下を削除対象にします。

問題の状況

  • VPNサーバーのログが大量に溜まっていた
  • システムの容量が逼迫
  • 自動で古いログを削除する仕組みがなかった

解決方法

シンプルな自動削除スクリプトを作成して対応することにしました。

余計なログ出力も省いて、必要最小限の機能だけを実装しています。

作成したスクリプト
#!/bin/bash

# 基本設定
VPN_BASE_DIR="/usr/local/vpnserver"
LOG_DIRS=("security_log" "packet_log" "server_log")
DAYS_TO_KEEP=30

# エラーハンドリング
set -euo pipefail

# メイン処理
for log_dir in "${LOG_DIRS[@]}"; do
    target_dir="$VPN_BASE_DIR/$log_dir"
    
    if [ ! -d "$target_dir" ]; then
        echo "警告: $target_dir が存在しません" >&2
        continue
    fi
    
    # 30日以上前のログを削除
    find "$target_dir" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
done
/etc/cron.daily/vpn_cleanup
スクリプトの設定方法

上記スクリプトvpn_cleanupを/etc/cron.daily/に配置

sudo chmod 755 /etc/cron.daily/vpn_cleanup
sudo chown root:root /etc/cron.daily/vpn_cleanup

これで毎日自動的にスクリプトが実行されるようになります。cron.dailyに配置したスクリプトは、システムによって自動的に実行されます。

このスクリプトの要点

  • シンプルな実装で余計な機能がない
  • エラー時のみ通知される(ログが溜まらない)
  • 30日以上古いログファイルを自動で削除
  • システムリソースの使用が最小限

運用してみた感想

設定してから1週間ほど経ちましたが、ログファイルの容量は適切にコントロールされています。

エラーの通知も来ていないので、正常に動作していると思われます。

シンプルイズベスト!余計な機能は付けず、必要最小限の実装にしたことで、メンテナンスも楽になりました。

Tips:実運用前にテスト実行することをお忘れなく!