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 ダッシュボードを作成する際には、各イベントに含まれるフィールドを知っていると便利です。

以下は共通のフィールドで、すべてのイベントに存在します。
表 1. 共通イベント・タイプ
logstashCollector-1.0 フィールド名 フィールドの説明
type イベント・タイプを識別するストリング
datetime イベントが発生した時刻
hostName イベントのソースであるサーバーのホスト名

ホスト名の設定ルールについて詳しくは、Docker で実行中の Liberty でのログ・コレクターの使用を参照してください。

wlpUserDir イベントのソースであるサーバーのユーザー・ディレクトリー。例えば、D:¥wlp¥usr など。
serverName イベントのソースであるサーバーのサーバー名

サーバー名の設定ルールについて詳しくは、Docker で実行中の Liberty でのログ・コレクターの使用を参照してください。

sequence イベントの順序番号 (同じタイム・スタンプのレコードをソートする場合に便利です)
[17.0.0.1 and later]tags [17.0.0.1 and later]イベントの発信元であるサーバーに関連付けられたタグ
共通フィールドのほかに、各イベント・タイプに固有のフィールドもあります。
  • メッセージ・イベント
    表 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 で始まります。
    [16.0.0.4 and later]注: バイナリー・ロギングが有効な場合、Logstash コレクターは、デフォルトのログとトレース・フレームワークに加えてメッセージ・イベントを転送します。
  • トレース・イベント
    表 3. トレース・イベント (タイプ:「liberty_trace」)
    logstashCollector-1.0 フィールド名 フィールドの説明
    severity 重大度標識 (1 = 良い、2 = より良い、3 = 最も良い、> = 入り口、< = 出口)
    methodName ログ・レコードのメソッド名
    className ログ・レコードのクラス名
    loggerName ログ・レコードのロガー名
    threadId ログ行内のスレッド ID (00000015 など)。スレッド ID は、数値ではなく、ストリングです。
    message ログ・レコードのメッセージ
    [16.0.0.4 and later]注: バイナリー・ロギングが有効な場合、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 使用済みヒープの量
    [17.0.0.1 and later]maxHeap [17.0.0.1 and later]JVM で許可される最大ヒープ
    duration ガーベッジ・コレクション実行時の所要時間 (マイクロ秒)
    gcType ガーベッジ・コレクション・イベントのタイプ (Nursery、Global など)
    reason ガーベッジ・コレクションの理由

Docker で実行中の Liberty でのログ・コレクターの使用

Liberty サーバーを Docker コンテナーまたは他の仮想化環境で実行する場合、 hostName および serverName は以下のように設定されます。

hostName フィールドは、以下の値のうち、最初に使用可能になる値に設定されます。
  • CONTAINER_HOST 環境変数の値
  • ${defaultHostName} Liberty 構成変数の値
  • Software Development Kit (JDK) によって報告された正規のホスト名
serverName フィールドは、以下の値のうち、最初に使用可能になる値に設定されます。
  • CONTAINER_NAME 環境変数の値
  • ${wlp.server.name} Liberty 構成変数の値

Liberty サーバーを IBM Cloud コンテナー・サービスで実行する場合、 CONTAINER_HOST および CONTAINER_NAME は既に設定されています。

Liberty サーバーを Liberty Docker 集合で実行する場合、 CONTAINER_HOST および CONTAINER_NAME は既に設定されています。

Liberty サーバーを Docker コンテナー (またはお客様が管理する他の仮想環境) で実行する場合は、イメージの実行時に、CONTAINER_HOST 環境変数および CONTAINER_NAME 環境変数を設定してください。これらの環境変数によって、ログ・コレクターが、送信レコードを適切なホストおよびコンテナー名に確実にタグ付けするので、問題判別時に役立ちます。これらの環境変数を設定しなかった場合は、複数のコンテナーからのイベントを表示するダッシュボードを使用する際に、どのコンテナーがどのイベントを送信したのかを判別しにくくなる場合があります。Docker コンテナーの開始時に、以下のようなコマンドを使用します。
docker run -d -e LICENSE=accept -e CONTAINER_NAME=yourContainerName -e CONTAINER_HOST=yourContainerHost --name=yourContainerName yourImageName

トピックのタイプを示すアイコン 概念トピック

ファイル名: cwlp_analytics_collectors.html