Logstash のログ・コレクター
Liberty は実行時に、ログ・イベント、トレース・イベント、初期障害データ・キャプチャー機能 (FFDC) イベント、アクセス・ログ・イベント、およびガーベッジ・コレクション・イベントなど、さまざまなイベントを生成します。特に、多くのサーバーを管理しているときや複数のサーバーが異なるプラットフォームで稼働しているとき (専用ハードウェアと Bluemix® など)、すべてのサーバーのイベントを統合して、イベントを検索、フィルタリング、分析できるようにすると便利です。また、問題判別データ用のパーシスタント・ファイル・ストレージがない環境で Liberty を使用する場合に、別のサーバーにイベントを保管すると便利であることがあります。
Liberty では、リモートでイベントを統合するのに役立つ Logstash のログ・コレクター・フィーチャーが提供されています。これらのコレクターは、発生しているイベントを収集し、フィールドに分割し、構成済みの Logstash のログ・コレクション・サーバーにイベントを安全に転送します。コレクターは、以下の 1 つ以上のタイプのデータを送信するように構成することができます。
- メッセージ・ログ・イベント
- トレース・ログ・イベント
- HTTP アクセス・ログ・イベント (Liberty サーバーから)
- FFDC ログ・イベント
- ガーベッジ・コレクション・イベント (IBM JDK の場合のみ使用可能)
Logstash コレクター
Logstash コレクター・フィーチャー (logstashCollector-1.0) は、ユーザーが提供する Logstash サーバーにイベントを送信します。
Logstash を Elasticsearch 検索サーバーおよび Kibana ダッシュボード (これらはすべて、ユーザーが提供、セットアップ、管理します) と一緒に使用して、エンタープライズ全体のログやその他のイベントの統合ビューを示すことができます。 Logstash コレクターがイベントを転送するために、Liberty サーバー・コンピューターで別のプロセスやエージェントをセットアップする必要はありません。
イベント構造体
コレクターは、フィールド名と値のペアのセットとして各イベントを送信します。異なるタイプのイベントにはそれぞれ、固有のフィールド・セットがあります。 独自の Kibana ダッシュボードを作成する際には、各イベントに含まれるフィールドを知っていると便利です。
logstashCollector-1.0 フィールド名 | フィールドの説明 |
---|---|
type | イベント・タイプを識別するストリング |
datetime | イベントが発生した時刻 |
hostName | イベントのソースであるサーバーのホスト名 ホスト名の設定ルールについて詳しくは、Docker で実行中の Liberty でのログ・コレクターの使用を参照してください。 |
wlpUserDir | イベントのソースであるサーバーのユーザー・ディレクトリー。例えば、D:¥wlp¥usr など。 |
serverName | イベントのソースであるサーバーのサーバー名 サーバー名の設定ルールについて詳しくは、Docker で実行中の Liberty でのログ・コレクターの使用を参照してください。 |
sequence | イベントの順序番号 (同じタイム・スタンプのレコードをソートする場合に便利です) |
![]() |
![]() |
- メッセージ・イベント
表 2. メッセージ・イベント (タイプ:「liberty_message」) logstashCollector-1.0 フィールド名 フィールドの説明 severity 重大度標識 (F = 致命的、E = エラー、W = 警告、A = 監査、I = 通知、O = システム出力、R = システム・エラー) messageId ログ行内のメッセージ ID。これを使用して、特定タイプのエラーを検索することができます (SRVE0250I など) methodName ログ・レコードのメソッド名 className ログ・レコードのクラス名 loggerName ログ・レコードのロガー名 threadId ログ行内のスレッド ID (00000015 など)。スレッド ID は、数値ではなく、ストリングです。 message ログ・レコードのメッセージ。メッセージ ID で始まります。 注: バイナリー・ロギングが有効な場合、Logstash コレクターは、デフォルトのログとトレース・フレームワークに加えてメッセージ・イベントを転送します。
- トレース・イベント
表 3. トレース・イベント (タイプ:「liberty_trace」) logstashCollector-1.0 フィールド名 フィールドの説明 severity 重大度標識 (1 = 良い、2 = より良い、3 = 最も良い、> = 入り口、< = 出口) methodName ログ・レコードのメソッド名 className ログ・レコードのクラス名 loggerName ログ・レコードのロガー名 threadId ログ行内のスレッド ID (00000015 など)。スレッド ID は、数値ではなく、ストリングです。 message ログ・レコードのメッセージ 注: バイナリー・ロギングが有効な場合、Logstash コレクターは、デフォルトのログとトレース・フレームワークに加えてトレース・イベントを転送します。
- HTTP アクセス・ログ・イベント
表 4. HTTP アクセス・ログ・イベント (タイプ:「liberty_accesslog」) logstashCollector-1.0 フィールド名 フィールドの説明 uriPath 要求された URL のパス情報。 このパス情報には、照会パラメーター (/pushworksserver/ push/apps/tags など) は含まれません。 requestMethod HTTP verb (GET など) remoteHost リモート・ホスト IP アドレス (127.0.0.1 など) userAgent 要求の userAgent 値 requestProtocol プロトコル・タイプ (HTTP/1.1 など) queryString HTTP 要求の照会ストリングを表すストリング (color=blue&size=large など) bytesReceived URL で受信したバイト数 (94 など) responseCode HTTP 応答コード (200 など) elapsedTime 要求の処理にかかった時間 (マイクロ秒) requestHost 要求ホスト IP アドレス (127.0.0.1 など) requestPort 要求のポート番号 - FFDC イベント
表 5. FFDC イベント (タイプ:「liberty_ffdc」) logstashCollector-1.0 フィールド名 フィールドの説明 className FFDC エントリーを出力したクラス exceptionName FFDC エントリーで報告された例外 probeID クラス内の FFDC ポイントの固有 ID stackTrace FFDC インシデントのスタック・トレース objectDetails FFDC インシデントのインシデント詳細 threadId FFDC インシデントのスレッド ID - ガーベッジ・コレクション・イベント
表 6. ガーベッジ・コレクション・イベント (タイプ:「liberty_gc」:) logstashCollector-1.0 フィールド名 フィールドの説明 heap 現在使用可能な合計ヒープ usedHeap 使用済みヒープの量 maxHeap
JVM で許可される最大ヒープ
duration ガーベッジ・コレクション実行時の所要時間 (マイクロ秒) gcType ガーベッジ・コレクション・イベントのタイプ (Nursery、Global など) reason ガーベッジ・コレクションの理由
Docker で実行中の Liberty でのログ・コレクターの使用
Liberty サーバーを Docker コンテナーまたは他の仮想化環境で実行する場合、 hostName および serverName は以下のように設定されます。
- CONTAINER_HOST 環境変数の値
- ${defaultHostName} Liberty 構成変数の値
- Software Development Kit (JDK) によって報告された正規のホスト名
- CONTAINER_NAME 環境変数の値
- ${wlp.server.name} Liberty 構成変数の値
Liberty サーバーを IBM Cloud コンテナー・サービスで実行する場合、 CONTAINER_HOST および CONTAINER_NAME は既に設定されています。
Liberty サーバーを Liberty Docker 集合で実行する場合、 CONTAINER_HOST および CONTAINER_NAME は既に設定されています。
docker run -d -e LICENSE=accept -e CONTAINER_NAME=yourContainerName -e CONTAINER_HOST=yourContainerHost --name=yourContainerName yourImageName