Logstash および Bluemix のログ・コレクター
Liberty は実行時に、ログ・イベント、トレース・イベント、初期障害データ・キャプチャー機能 (FFDC) イベント、アクセス・ログ・イベント、およびガーベッジ・コレクション・イベントなど、さまざまなイベントを生成します。特に、多くのサーバーを管理しているときや複数のサーバーが異なるプラットフォームで稼働しているとき (専用ハードウェアとクラウドなど)、 すべてのサーバーのイベントを統合して、イベントを検索、フィルタリング、分析できるようにすると便利です。 また、問題判別データ用のパーシスタント・ファイル・ストレージがない環境で Liberty を使用する場合に、別のサーバーにイベントを保管すると便利であることがあります。
Liberty では、リモートでイベントを統合するのに役立つ Logstash および Bluemix のログ・コレクター・フィーチャーが提供されています。これらのコレクターは、発生しているイベントを収集し、フィールドに分割し、構成済みの Logstash または Bluemix のログ・コレクション・サーバーにイベントを安全に転送します。コレクターは、以下の 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 での Logstash および Bluemix ログ・コレクターの使用を参照してください。 |
wlpUserDir | イベントのソースであるサーバーのユーザー・ディレクトリー。例えば、D:¥wlp¥usr など。 |
serverName | イベントのソースであるサーバーのサーバー名 サーバー名の設定ルールについて詳しくは、Docker で実行中の Liberty での Logstash および Bluemix ログ・コレクターの使用を参照してください。 |
sequence | イベントの順序番号 (同じタイム・スタンプのレコードをソートする場合に便利です) |
- メッセージ・イベント
表 2. メッセージ・イベント (タイプ: 「liberty_message」:) logstashCollector-1.0 フィールド名 フィールドの説明 severity 重大度標識 (F = 致命的、E = エラー、W = 警告、A = 監査、I = 通知、O = システム出力、R = システム・エラー) 重大度標識 (FATAL、ERROR、WARNING、AUDIT、INFO、CONFIG、DETAIL)
messageId ログ行内のメッセージ ID。これを使用して、特定タイプのエラーを検索することができます (SRVE0250I など) methodName ログ・レコードのメソッド名 className ログ・レコードのクラス名 loggerName ログ・レコードのロガー名 threadId ログ行内のスレッド ID (00000015 など)。スレッド ID は、数値ではなく、ストリングです。 message ログ・レコードのメッセージ。メッセージ ID で始まります。 注: バイナリー・ロギングが有効な場合、Logstash コレクターは、デフォルトのログとトレース・フレームワークに加えてメッセージ・イベントを転送します。
- トレース・イベント
表 3. トレース・イベント (タイプ: 「liberty_trace」:) logstashCollector-1.0 フィールド名 フィールドの説明 severity 重大度標識 (1 = 良い、2 = より良い、3 = 最も良い、> = 入り口、< = 出口) 重大度標識 (FINE、FINER、FINEST、ENTRY、EXIT) 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 使用済みヒープの量 duration ガーベッジ・コレクション実行時の所要時間 (マイクロ秒) gcType ガーベッジ・コレクション・イベントのタイプ (Nursery、Global など) reason ガーベッジ・コレクションの理由
Docker で実行中の Liberty での Logstash および Bluemix ログ・コレクターの使用
Liberty サーバーを Docker コンテナーまたは他の仮想化環境で実行する場合、 hostName および serverName は以下のように設定されます。
- CONTAINER_HOST 環境変数の値
- ${defaultHostName} Liberty 構成変数の値
- Software Development Kit (JDK) によって報告された正規のホスト名
- CONTAINER_NAME 環境変数の値
- ${wlp.server.name} Liberty 構成変数の値
Liberty サーバーを Bluemix コンテナー・サービスで実行する場合、 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