Helix Swarm管理者ガイド (2020.1)

ログ記録

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」です。

各優先度レベルを以下に示します。

優先度

説明

0

緊急: システムが不安定であることを伝えるメッセージ

1

アラート: ただちに措置が必要であることを伝えるメッセージ

2

重大: 重大な状態を伝えるメッセージ

3

エラー: エラーを伝えるメッセージ

4

警告: 警告状態を伝えるメッセージ

5

注意: 通常状態であるが重要な状態を伝えるメッセージ

6

情報: 情報メッセージ

7

デバッグ: デバッグメッセージ

注意

priority0より低い値に設定しても、ログに記録される情報量が減ることはありません。

参照ID

reference_idtrueに設定されている場合、すべてのログメッセージの末尾に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名のリストを指定するための配列です。 例えば、ダウンロードにかかる時間がデフォルトのしきい値よりも大幅に長い場合に、SwarmFilesモジュールを使用して、ダウンロードルートを無視するように指定することができます。

注意

Swarmをホストしているサーバの性能に応じて(特に、関連するHelixサーバの性能に応じて)、SWARM_ROOT/data/xhprofフォルダでディスクの使用率をモニタリングすることをお勧めします。 時間しきい値を超える場合、各要求による書き込みデータの容量は200~600KBに及びます。