ログ ローテーション(複数のログファイルをローテーションして使用するプロセス)により、大量のログファイルを生成するシステムの管理が簡素化されます。ログ ローテーションを使用すると、ログファイルの自動ローテーション、圧縮、削除、メール送信が可能になります。
Edge for Private Cloud では、各 apigee コンポーネントの主要なログファイルの一部が、デフォルトのローテーション メカニズムで構成されています。たとえば、Message Processor コンポーネントでは、次のファイルが logback を使用するデフォルトのローテーション メカニズムで構成されています。
/opt/apigee/var/log/edge-message-processor/logs/system.log/opt/apigee/var/log/edge-message-processor/logs/events.log/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log/opt/apigee/var/log/edge-message-processor/logs/configurations.log/opt/apigee/var/log/edge-message-processor/logs/transactions.log
他の edge-* コンポーネント(名前が edge- で始まる)にも、edge-management-server、edge-router、edge-postgres-server、edge-qpid-server などの同様のファイルが存在します。
edge-* コンポーネントはそれぞれ、各コンポーネントのコンソールのリダイレクトされた出力である追加のログファイルも生成します。Message Processor コンポーネントの場合、このファイルは /opt/apigee/var/log/edge-message-processor/edge-message-processor.log と呼ばれます。他の edge-* コンポーネントも同様のファイルを生成します。これらのファイルのローテーションは、logback ライブラリではなく、logrotate と crontab を使用して行われます。
始める前に
logrotate構成に詳しくない場合は、logrotate のマニュアルをご覧ください。crontab構成に詳しくない場合は、crontab マニュアルをご覧ください。
ログ ローテーションを有効にする
Edge for Private Cloud バージョン 4.52 以降では、edge-* コンポーネントをインストールすると、このログをローテーションするための crontab エントリが apigee ユーザーの crontab に自動的に作成されます。この cron ジョブは、デフォルトで 1 時間ごとに実行され、logrotate ユーティリティを使用してログをローテーションします。同じノードに複数の edge-* コンポーネントがインストールされている場合(オールインワン インストールの場合や、ルーターと Message Processor が 1 つのノードにインストールされている場合など)、コンポーネントごとに、それぞれのログをローテーションするための独自の cron エントリがあります。
注:
edge-*コンポーネントのインストール中にlogrotatecronjob を自動的に設定しない場合は、インストールに使用するサイレント構成ファイルでフラグ「ENABLE_LOGROTATE=n」を設定します。インストール中に cron ジョブが設定されていない場合は、コンポーネントのlogrotatecron を有効にする手順に沿って、後で設定できます。- コンポーネント
edge-routerの場合、追加のlogrotatecron ジョブもデフォルトで構成されます。この cron は、Nginx によって生成されたアクセスログとエラーログをローテーションします。
次の例は、実行可能なさまざまな構成と管理オペレーションを示しています。
ノードの cron エントリを表示する
sudo crontab -u apigee -l
コンポーネントの logrotate cron エントリを表示する
$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -s
たとえば、edge-message-processor の logrotate cron を表示するには、次のコマンドを実行します。
$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -s
コンポーネントの logrotate 構成を表示する
コンポーネントの logrotate 構成は、ファイル $APIGEE_ROOT/<component>/logrotate/logrotate.conf にあります。たとえば、edge-message-processor の場合、ノードの logrotate 構成は $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.conf にあります。
コンポーネントの logrotate cron を有効にする
$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -e
たとえば、edge-message-processor の logrotate cron を有効にするには、次のコマンドを実行します。
$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -e
コンポーネントの logrotate cron を無効にする
$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -d
たとえば、edge-message-processor の logrotate cron を無効にするには、次のコマンドを実行します。
$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -d
特定の logrotate コマンドの cron スケジュールを変更する
logrotate cron スケジュールを変更するノードで、各コンポーネントの構成オーバーライド ファイルを開きます。edge-* コンポーネントの構成オーバーライド ファイルを次の表に示します。
| コンポーネント | 構成オーバーライド ファイル |
|---|---|
edge-message-processor |
$APIGEE_ROOT/customer/application/message-processor.properties |
edge-management-server |
$APIGEE_ROOT/customer/application/management-server.properties |
edge-router |
$APIGEE_ROOT/customer/application/router.properties |
edge-postgres-server |
$APIGEE_ROOT/customer/application/postgres-server.properties |
edge-qpid-server |
$APIGEE_ROOT/customer/application/qpid-serverproperties |
適切なオーバーライド ファイルを開き、次の構成オーバーライドを設定します。次の例では、cron ジョブをオーバーライドして、毎時 0 分に実行します。
conf_logrotate_cron_duration=0 * * * *
構成のオーバーライドを設定するには:
apigeeユーザーがファイルを読み取れることを確認します。- 新しい cron スケジュールをコンポーネントに適用します。
$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -e
たとえば、新しい cron スケジュールを edge-message-processor の logrotate に適用するには、次のように入力します。
$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -e
変更が適用されたことを確認するには、cron エントリを確認するか、コンポーネントの logrotate cron エントリを表示します。
その他の logrotate 構成
cron スケジュールの変更に関する上記のセクションに記載されている手順と同様に、追加の構成を変更することもできます。次の表に、これらの構成を示します。
| 構成 | 説明 |
|---|---|
conf_logrotate_bin_location |
logrotate バイナリの場所。デフォルト: /usr/sbin/logrotate |
conf_logrotate_status_file |
logrotate のランタイム ステータスをキャプチャするステータス ファイル。apigee ユーザーの読み取り/書き込み権限が表示されます。デフォルト: $APIGEE_ROOT/var/run/<component>/logrotate.status |
conf_logrotate_logs |
ローテーションするログ。ワイルドカードを使用できます。デフォルト: $APIGEE_ROOT/var/log/<component>/<component>.log
|
conf_logrotate_rotate |
回転数。デフォルト: 5 |
conf_logrotate_compress |
ローテーションされたファイルを圧縮するかどうか。デフォルト: compress |
conf_logrotate_compress_type |
圧縮のタイプ。デフォルト: 「delaycompress」。最新のローテーションされたファイルの圧縮を次の logrotate サイクルまで延期します。 |
conf_logrotate_size |
ローテーションのログサイズの上限。デフォルト: “10M” |
独自のログ ローテーション メカニズムと cron を使用する
<component>.log のローテーションに関する要件が Apigee の構成で満たされない場合は、logrotate などのツールを使用して独自のログ ローテーション メカニズムを利用します。たとえば、Apigee が提供する構成では、ログをサイズでローテーションできますが、日時やその他の要素に基づいてログをローテーションする必要がある場合です。このような場合は、Apigee が提供する logrotate cron を無効にして、必要に応じて独自の cron ジョブを設定する必要があります。
Apigee のログ ローテーション cron エントリを参照する必要がある場合は、ファイル $APIGEE_ROOT/ で確認できます。たとえば、edge-message-processor の場合、このファイルは $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.cron と呼ばれます。このファイルには、cron エントリと、ログ ローテーションのために Apigee によって実行されるコマンドの両方が含まれています。logrotate を使用するが、Apigee の構成は使用しない場合は、独自の logrotate 構成ファイルを作成し、同様の logrotate コマンドを使用してログ ローテーションを実行できます。