Edge コンポーネントのログ ローテーションを有効にする

ログ ローテーション(複数のログファイルを使用または使用したものをローテーションするプロセス)によって、大量のログファイルが生成されるシステムの管理が簡素化されます。ログ ローテーションにより、ログファイルの自動ローテーション、圧縮、削除、メール送信が可能になります。

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-serveredge-routeredge-postgres-serveredge-qpid-server など、他の edge-* コンポーネント(名前が edge- で始まるもの)にも同様のファイルが存在します。

これらの edge-* コンポーネントは、追加のログファイルも生成します。これは、各コンポーネントのコンソールからリダイレクトされた出力です。Message Processor コンポーネントの場合、このファイルは /opt/apigee/var/log/edge-message-processor/edge-message-processor.log と呼ばれます。他の edge-* コンポーネントでも同様のファイルが生成されます。これらのファイルのローテーションは、logback ライブラリではなく、logrotatecrontab を使用して行われます。

始める前に

ログ ローテーションを有効にする

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 * * * *

構成のオーバーライドを設定するには:

  1. apigee ユーザーがファイルを読み取ることができることを確認します。
  2. 新しい 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//logrotate/logrotate.cron ファイルで確認できます。たとえば edge-message-processor の場合、このファイルは $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.cron と呼ばれます。このファイルには、cron エントリと、Apigee がログ ローテーションのために実行するコマンドの両方が含まれています。logrotate を使用するものの、Apigee の構成を使用しない場合は、独自の logrotate 構成ファイルを作成し、同様の logrotate コマンドを使用してログ ローテーションを行います。