アプリケーションログは定期的にクリーンアップする必要があります。そうしないと、サイズの大きいログファイルがストレージ容量を消費し、アプリケーションエラーを引き起こす可能性があります。アプリケーションコードでログのクリーンアップを実装することもできますが、このトピックでは代替ソリューションについて説明します。簡単な構成を使用して、Serverless App Engine (SAE) アプリケーションのログを定期的にクリーンアップできます。
概要
このソリューションでは、アプリケーション実行環境の Cron ツールを使用して、設定した定期タスク構成に基づいてログのクリーンアップタスクを自動的に実行します。
操作手順
コードパッケージからデプロイされたアプリケーション
以下のセクションでは、さまざまなオペレーティングシステムのバージョンで Cron ツールをインストールし、構成する方法について説明します。
アプリケーション実行環境に対応するオペレーティングシステムのバージョンの詳細については、「コードパッケージからアプリケーションをデプロイする」をご参照ください。
Debian オペレーティングシステム
Cron ツールのインストールと定期タスクの構成
アプリケーションを作成またはデプロイするには、Application Deployment Method を Code Package-based Deployment に設定し、Configure Code Package-based Deployment をクリックし、Custom Runtime Environment Settings (Including Tool Pre-installation, File Download/Modification, and Runtime Dependency/Extension Installation) を有効にして、次のコマンドを入力します。
#!/bin/bash set -o errexit set -o nounset set -o pipefail # Cron ツールをインストールします。 apt-get update || true apt-get install -y cron # 定期タスクを構成します (詳細については、このトピックの「定期タスクのパラメーター」セクションをご参照ください)。 echo "0 * * * * root find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 1時間ごとに実行され、7日以上変更されていないログファイルを削除します。 # 結果を迅速に確認するには、次の構成を使用できます。 # echo "* * * * * root find /home/admin/logs/* -mmin +1 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 1分ごとに実行され、1分以上変更されていないログファイルを削除します。Cron ツールの起動
アプリケーションを作成またはデプロイするときは、Application Lifecycle Management エリアで PostStart Settings を有効にし、次のコマンドを入力します。
service cron start
CentOS オペレーティングシステム
Cron ツールのインストールと定期タスクの構成
アプリケーションを作成またはデプロイするときは、Application Deployment Method を Code Package-based Deployment に設定し、Configure Code Package-based Deployment をクリックし、Custom Runtime Environment Settings (Including Tool Pre-installation, File Download/Modification, and Runtime Dependency/Extension Installation) を有効にして、次のコマンドを入力します。
#!/bin/bash # Cron ツールはランタイム環境に含まれているため、インストールする必要はありません。 # 定期タスクを構成します (詳細については、このトピックの「定期タスクのパラメーター」セクションをご参照ください)。 echo "0 * * * * root find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 1時間ごとに実行され、7日以上変更されていないログファイルを削除します。 # 結果を迅速に確認するには、次の構成を使用できます。 # echo "* * * * * root find /home/admin/logs/* -mmin +1 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 1分ごとに実行され、1分以上変更されていないログファイルを削除します。Cron ツールの起動
アプリケーションを作成またはデプロイする際、Application Lifecycle Management セクションで、PostStart Settingsを有効にして、次のコマンドを入力します:
/sbin/crond start
イメージからデプロイされたアプリケーション
イメージビルドフェーズで、Cron ツールをインストールし、定期タスクを構成します。
アプリケーションを作成またはデプロイするときは、[アプリケーションライフサイクル管理] セクションで [起動後ハンドラー (PostStart 設定)] を有効にし、次のいずれかのコマンドを入力します。
Debian オペレーティングシステムベースのイメージの場合:
service cron startCentOS オペレーティングシステムベースのイメージの場合:
/sbin/crond start
定期タスクのパラメーター
次のセクションでは、定期タスクを構成するためのコマンドについて詳しく説明します。
echo "0 * * * * root find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;">>/etc/crontab/etc/crontab:定期タスクの構成ファイルです。0 * * * *:Crontab 式です。この式は、定期タスクの実行時間を指定します。式はカスタマイズできます。フォーマットは次のとおりです。f1 f2 f3 f4 f5このフォーマットでは、
f1は分、f2は時、f3は日、f4は月、f5は曜日を表します。f1が*の場合、プログラムは毎分実行されます。f2が*の場合、プログラムは毎時実行されます。一般的な Crontab 式は次のとおりです。
実行時間
フォーマット
毎分 1 回実行
* * * * *
毎時 1 回実行
0 * * * *
毎日 1 回実行
0 0 * * *
毎週 1 回実行
0 0 * * 0
毎月 1 回実行
0 0 1 * *
root:定期タスクを実行するユーザーです。find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;:このコマンドは、/home/admin/logs フォルダ内のすべてのログファイルを検索し、7日以上変更されていないファイルを削除します。-mtimeは時間を日数で指定し、-mminは時間を分で指定します。