ログ ローテーション(複数のログファイルを使用または使用したものをローテーションするプロセス)によって、大量のログファイルが生成されるシステムの管理が簡素化されます。ログ ローテーションにより、ログファイルの自動ローテーション、圧縮、削除、メール送信が可能になります。
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-management-server
、edge-router
、edge-postgres-server
、edge-qpid-server
など、他の edge-*
コンポーネント(名前が edge-
で始まるもの)にも同様のファイルが存在します。
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-*
コンポーネントが同じノードにインストールされている場合(オールインワン インストールや、Router と Message Processor が 1 つのノードにインストールされている場合)、各コンポーネントには、それぞれのログをローテーションするための独自の cron エントリがあります。
Notes:
edge-*
コンポーネントのインストール中に、logrotate
cron ジョブを自動的に設定しない場合は、インストールに使用するサイレント構成ファイルで「ENABLE_LOGROTATE=n」フラグを設定します。インストール時に cron ジョブを設定しなかった場合、コンポーネントのlogrotate
cron を有効にする手順に沿って、後で cron ジョブを設定できます。- コンポーネント
edge-router
の場合、追加のlogrotate
cron ジョブもデフォルトで構成されます。この 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 |
適切なオーバーライド ファイルを開き、次の構成オーバーライドを設定します。以下の例では、1 時間ごとに 0 分に実行するように cron ジョブをオーバーライドしています。
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
コマンドを使用してログ ローテーションを行います。