第9章 Data Grid サーバーの監視
9.1. Working with Data Grid Server Logs
Data Grid は Apache Log4j 2 を使用して、トラブルシューティング目的および根本原因分析のための環境およびレコードキャッシュ操作の詳細を取得する設定可能なロギングメカニズムを提供します。
9.1.1. Data Grid のログファイル
Data Grid は、ログメッセージを $RHDG_HOME/${infinispan.server.root}/log
ディレクトリーに書き込みます。
server.log
-
サーバーの起動に関連する起動ログなど、人間が判読できる形式のメッセージ。
Data Grid は、サーバーの起動時にデフォルトでこのファイルを作成します。 server.log.json
-
Data Grid ログを解析および分析できる JSON 形式のメッセージ。
JSON-FILE
アペンダーを有効にすると、Data Grid はこのファイルを作成します。
9.1.2. データグリッドログプロパティーの設定
Log4j2 の マニュアル で説明されている log4j2.xml
を使用して Data Grid ログを設定します。
手順
-
任意のテキストエディターで
$RHDG_HOME/${infinispan.server.root}/conf/log4j2.xml
を開きます。 - 必要に応じてロギング設定を変更します。
-
log4j2.xml
を保存し、閉じます。
9.1.2.1. ログレベル
ログレベルは、メッセージの性質と重大度を示します。
ログレベル | 説明 |
---|---|
| 粒度の細かいデバッグメッセージ。アプリケーションを介して個々のリクエストのフローをキャプチャーします。 |
| 個々のリクエストと関連性のない、一般的なデバッグのメッセージ。 |
| ライフサイクルイベントを含む、アプリケーションの全体的な進捗状況に関するメッセージ。 |
| エラーやパフォーマンスの低下につながる可能性のあるイベント。 |
| 操作またはアクティビティーの正常な実行を妨げる可能性がありますが、アプリケーションの実行は妨げないエラー状態。 |
| 重大なサービス障害やアプリケーションのシャットダウンを引き起こす可能性のあるイベント。 |
上記の個々のメッセージのレベルに加えて、この設定では、ALL
(すべてのメッセージを含む) と OFF
(すべてのメッセージを除外) のさらに 2 つの値を可能にします。
9.1.2.2. Data Grid ログカテゴリー
Data Grid は、機能領域ごとにログを整理する INFO
、WARN
、ERROR
、FATAL
のレベルのメッセージのカテゴリーを提供します。
org.infinispan.CLUSTER
- 状態遷移操作、イベントのリバランス、パーティション設定などが含まれる Data Grid クラスタリング固有のメッセージ。
org.infinispan.CONFIG
- Data Grid 設定固有のメッセージ
org.infinispan.CONTAINER
- 有効期限とエビクション操作、キャッシュリスナーの通知、トランザクションなどを含むデータコンテナーに固有のメッセージ。
org.infinispan.PERSISTENCE
- キャッシュローダーとストアに固有のメッセージ。
org.infinispan.SECURITY
- Data Grid のセキュリティーに固有のメッセージ。
org.infinispan.SERVER
- Data Grid Server に固有のメッセージ。
org.infinispan.XSITE
- クロスサイトレプリケーション操作に固有のメッセージ。
9.1.2.3. ログアペンダー
ログアペンダーは、Data Grid によるログメッセージの記録方法を定義します。
- CONSOLE
-
ログメッセージをホストの標準出力 (
stdout
) または標準エラー (stderr
) ストリームに書き込みます。
デフォルトでorg.apache.logging.log4j.core.appender.ConsoleAppender
クラスを使用します。 - FILE
-
ファイルにログメッセージを書き込みます。
デフォルトでorg.apache.logging.log4j.core.appender.RollingFileAppender
クラスを使用します。 - JSON-FILE
-
ログメッセージを JSON 形式でファイルに書き込みます。
デフォルトでorg.apache.logging.log4j.core.appender.RollingFileAppender
クラスを使用します。
9.1.2.4. ログパターン
CONSOLE
および FILE
アペンダーは、PatternLayout
を使用して、pattern に従ってログメッセージをフォーマットします。
以下は、FILE アペンダーのデフォルトのパターンになります。%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c{1}] %m%throwable%n
-
%d{yyyy-MM-dd HH:mm:ss,SSS}
は現在の日時を追加します。 -
%-5p
は、ログレベルを右揃えで指定します。 -
%t
は、現在のスレッドの名前を追加します。 -
%c{1}
はロギングカテゴリーの短縮名を追加します。 -
%m
はログメッセージを追加します。 -
%throwable
は例外スタックトレースを追加します。 -
%n
は改行を追加します。
パターンについては、 PatternLayout
ドキュメント で詳細に説明されています。
9.1.2.5. JSON ログハンドラーの有効化および設定
Data Grid は、JSON 形式でメッセージを書き込む JSON ログハンドラーを提供します。
前提条件
Data Grid が実行されていないことを確認します。ログハンドラーは動的に有効にすることはできません。
手順
Data Grid を起動すると、各ログメッセージが JSON マップとして $RHDG_HOME/${infinispan.server.root}/log/server.log.json
ファイルに書き込まれます。
9.1.3. アクセスログ
hotgitops および REST エンドポイントは、以下のカテゴリーですべての受信クライアント要求をログエントリーとして記録できます。
-
Hotgitops エンドポイントの
org.infinispan.HOTROD_ACCESS_LOG
ロギングカテゴリー。 -
REST エンドポイントの
org.infinispan.REST_ACCESS_LOG
ロギングカテゴリー。
9.1.3.1. アクセスログの有効化
Hot Rod および REST エンドポイントのアクセスログはデフォルトで無効になっています。いずれかのログカテゴリーを有効にするには、次の例のように、Data Grid ログ設定でレベルを TRACE
に設定します。
<Logger name="org.infinispan.HOTROD_ACCESS_LOG" additivity="false" level="TRACE"> <AppenderRef ref="HR-ACCESS-FILE"/> </Logger>
9.1.3.2. アクセスログのプロパティー
アクセスログのデフォルト形式は以下のとおりです。
%X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}] "%X{method} %m %X{protocol}" %X{status} %X{requestSize} %X{responseSize} %X{duration}%n
前述のフォーマットは、以下のようなログエントリーを作成します。
127.0.0.1 - [DD/MM/YYYY:HH:MM:SS +0000] "PUT /rest/v2/caches/default/key HTTP/1.1" 404 5 77 10
ロギングプロパティーは %X{name}
表記を使用し、アクセスログの形式を変更可能にします。以下は、デフォルトのロギングプロパティーです。
プロパティー | 説明 |
---|---|
|
|
| 認証を使用する場合のプリンシパル名。 |
|
使用されるメソッド。 |
|
使用されるプロトコル |
|
REST エンドポイントの HTTP ステータスコード。 |
| リクエストのサイズ (バイト単位)。 |
| 応答のサイズ (バイト単位)。 |
| サーバーによる要求の処理にかかった時間 (ミリ秒数)。 |
h:
で始まるヘッダー名を使用して、リクエストに含まれるヘッダーをログに記録します (例: %X{h:User-Agent}
)。