ログ記録
Helix Swarmは、Webアプリケーションです。Swarmで通常の操作を実行すると、何種類かのログが記録されます。
構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。
Webサーバのログ記録
Swarmに対するすべてのアクセスは、SwarmをホストするWebサーバによって記録されます。Webサーバのログの設定はWebサーバ固有であるため、お使いのWebサーバのマニュアルを参照してください。当社では、Apacheの使用を推奨しています。Apache構成の詳細については、http://httpd.apache.org/docs/2.4/logs.htmlを参照してください。
Helix Coreサーバのログ
Swarmは、各ページ要求について、関連付けられたHelixサーバと通信を行います。ログ機能を有効にすると、Swarmによって生成されたHelixサーバ上の要求を確認することができます。
詳細については、Helix Coreサーバ管理者ガイドの「ログ記録を設定する」と「ユーザのファイルアクセスの監査」を参照してください。
Swarmのログ
Swarmに対するログ構成に応じて、Swarmの動作をログに記録することができます。問題が発生した場合は、Swarmのログを参照すると、有用な情報を確認することができます。
Swarmのログデータは、SWARM_ROOT/data/log
ファイルに保管されます。ログに記録されるエントリの量は、SWARM_ROOT/data/config.php
ファイル内の設定によって異なります。以下に例を示します。
<?php
// this block should be a peer of 'p4'
'log' => array(
'priority' => 3, // 7 for max, defaults to 3
),
priority
を使用して、ログに記録されるメッセージの重要度を指定します。priority
の値を、最小値である「0
」に設定すると、最も重要度の高いメッセージだけがログに記録されます。priority
の値を、最大値である「7
」に設定すると、最も重大の低いメッセージを含め、すべてのメッセージがログに記録されます。デフォルトの優先度は「3
」です。
各優先度レベルを以下に示します。
優先度 |
説明 |
---|---|
|
緊急: システムが不安定であることを伝えるメッセージ |
|
アラート: ただちに措置が必要であることを伝えるメッセージ |
|
重大: 重大な状態を伝えるメッセージ |
|
エラー: エラーを伝えるメッセージ |
|
警告: 警告状態を伝えるメッセージ |
|
注意: 通常状態であるが重要な状態を伝えるメッセージ |
|
情報: 情報メッセージ |
|
デバッグ: デバッグメッセージ |
priority
を0
より低い値に設定しても、ログに記録される情報量が減ることはありません。
ログローテーション機能
Swarm 2021.1以降、Swarmパッケージのインストールやアップグレードを行うと、Swarmログのローテーションを管理するためのログローテーション機能がインストールされるようになりました。この機能は、Helixサーバ1つ以上のインスタンスが存在するインストール環境Swarmで設定することができます。
ログローテーション機能は、デフォルトでオンになっています。この機能がオンになっている場合、以下の動作が実行されます。
-
Swarmのログが毎日ローテーションされる。
-
Swarmのログが14日間保存されます。
helix-swarmのログローテーション設定ファイルは、変更することも無効にすることもできます。このファイルは、/etc/logrotate.dに保管されています。このファイルに対する変更内容は、Swarmをアップグレードしても破棄されることはありません。
参照ID
reference_idがtrueに設定されている場合、すべてのログメッセージの末尾にreferenceId:<id>がつきます。ここで、<id>はログメッセージを生成したWebリクエストIDに基づいたハッシュ値です。そのWebリクエストの実行中、該当のWebリクエストに関連するすべてのログメッセージの末尾に<id>が追加されます。これにより、ログ内で特定のリクエストを追跡することができます。これは、ログメッセージの作成時に処理されていたリクエストを確認して診断するのに役立ちます。どのログメッセージがどのリクエストに対応しているのかがわかるため、特に多くのリクエストによってログが更新されている場合に役立ちます。
例: Swarm Webリクエストがワーカーを起動すると、そのワーカーが実行されている間、生成される<id>が、そのワーカーに関連するすべてのログエントリに追加されます。これにより、ワーカープロセスの実行中に発生したすべてのイベントを確認することができます。この例では、Webリクエストの参照IDは次のとおりです。"066ae44103ced2ab05c28578a36b6854":
2019-02-27T09:07:21+00:00 INFO (6): Worker 1 startup. {"referenceId":"066ae44103ced2ab05c28578a36b6854"}
2019-02-27T09:07:21+00:00 INFO (6): Worker 1 event: task.commit(3276) {"referenceId":"066ae44103ced2ab05c28578a36b6854"}
2019-02-27T09:07:21+00:00 DEBUG (7): P4 (0000000055794826000000002e2ec483) start command: help {"referenceId":"066ae44103ced2ab05c28578a36b6854"}
.
.
.
2019-02-27T09:17:16+00:00 INFO (6): Worker 1 shutdown. {"referenceId":"066ae44103ced2ab05c28578a36b6854"}
referenceId:<id>をSwarmログメッセージに追加するには、SWARM_ROOT/data/config.php
ファイルを編集し、reference_id構成可能変数を含めて、「true」に設定します。
<?php
// this block should be a peer of 'p4'
'log' => array(
'reference_id' => true, // defaults to false
),
デフォルト値はfalseです。
トリガトークンのエラー
トリガトークンが見つからない、または無効の場合、Webサーバエラーログに次のようなエラーが含まれます。
queue/add attempted with invalid/missing token: token used
A~Zの大文字、a~zの小文字、0~9の数字、またはダッシュ(-)が含まれていないトークンは無効です。
トークンをファイル名として使用しているファイルがSWARM_ROOT/data/queue/tokens
ディレクトリに存在しない場合、そのトークンも存在しないことになります。
パフォーマンスのログ記録
Swarmは、Helixサーバに対して発行されたコマンドの実行にかかる時間が予測時間よりも長い場合に、警告をログに記録します。これらの警告を使用して、Helixサーバのパフォーマンスに関する問題を診断することができます。
デフォルトでは、Swarmのログに警告情報は記録されません。警告情報をログに記録するには、ログの優先度の値を4以上に設定する必要があります。
デフォルト設定は、次のようになります。
<?php
// this block should be placed within the 'p4' block
'slow_command_logging' => array(
3, // commands without a specific rule have a 3-second limit
10 => array('print', 'shelve', 'submit', 'sync', 'unshelve'),
),
この構成ブロックでは、数値キーを使用して、時間のしきい値を秒単位で指定しています。また、このしきい値を使用するHelixサーバコマンドの配列を、値として指定しています。コマンドを複数のしきい値と関連付けした場合、最も大きな値がそのコマンドで使用されます。
また、Swarmは、PHPの拡張機能xhprofがインストールされたことを自動的に検出し、予測よりも時間がかかる要求のプロファイリングデータを収集します。このプロファイリングデータは、Swarmのパフォーマンスに関する問題を診断する場合に役立ちます。特に、コマンドの実行に長い時間がかかるという問題を診断する場合に役立ちます。収集されたプロファイリングデータは、SWARM_ROOT/data/xhprof
フォルダに保存されます。
デフォルト設定は、次のようになります。
<?php
// this block should be a peer of 'p4'
'xhprof' => array(
'slow_time' => 3, // the threshold in seconds
'ignored_routes' => array('download', 'imagick', 'libreoffice', 'worker'),
),
slow_timeを使用して、Swarmのリクエストの速度が遅いかどうかを判断するためのしきい値を秒数で指定します。ignored_routesは、プロファイリング処理から除外するLaminas Frameworkのroute
名を指定するための配列です。例えば、ダウンロードにかかる時間がデフォルトのしきい値よりも大幅に長い場合に、SwarmのFiles
モジュールを使用して、ダウンロードルートを無視するように指定することができます。
Swarmをホストしているサーバの性能に応じて(特に、関連するHelixサーバの性能に応じて)、SWARM_ROOT/data/xhprof
フォルダでディスクの使用率をモニタリングすることをお勧めします。時間しきい値を超える各リクエストは、書き込みデータが200~600KBにもなります。