Logstash 日誌收集器

Liberty 會在執行時期產生各種事件,例如,日誌事件、追蹤事件、首次失敗資料擷取 (FFDC) 事件、存取日誌事件,以及記憶體回收事件。 將所有伺服器的事件合併起來,以便搜尋、過濾及分析事件,會很有用;當您管理許多伺服器時,或當您在不同平台(例如,在專用硬體上,以及在 Bluemix®)上執行伺服器時,尤其如此。當使用 Liberty 的環境沒有用於問題判斷資料的持續性檔案儲存體時,將事件儲存在個別伺服器上,也很有用。

Liberty 提供 Logstash 日誌收集器特性,協助您從遠端合併事件。收集器會擷取進行中的事件,將它們分成若干欄位,然後將事件安全轉遞至所配置的 Logstash 日誌收集伺服器。收集器可配置成傳送下列一或多種類型的資料:

  • 訊息日誌事件
  • 追蹤日誌事件
  • 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 以及更新版本]標籤 [17.0.0.1 以及更新版本]該事件起源伺服器相關聯的標籤
除了一般欄位,每個事件類型也都有它自己的唯一欄位:
  • 訊息事件
    表 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 以及更新版本]註: 除了預設日誌和追蹤架構,若有啟用二進位記載,Logstash 收集器會轉遞訊息事件。
  • 追蹤事件
    表 3. 追蹤事件(類型:"liberty_trace"
    logstashCollector-1.0 欄位名稱 欄位說明
    severity 嚴重性指示器(1 = 細微、2 = 較細微、3 = 最細微、> = 進入、< = 結束)
    methodName 日誌記錄中的方法名稱
    className 日誌記錄中的類別名稱
    loggerName 日誌記錄中的日誌程式名稱
    threadId 日誌行中的執行緒 ID,例如:00000015。執行緒 ID 是一個字串,而不是數字
    message 日誌記錄中的訊息
    [16.0.0.4 以及更新版本]註: 除了預設日誌和追蹤架構,若有啟用二進位記載,Logstash 收集器會轉遞追蹤事件。
  • HTTP 存取日誌事件
    表 4. HTTP 存取日誌事件(類型:"liberty_accesslog"
    logstashCollector-1.0 欄位名稱 欄位說明
    uriPath 所要求 URL 的路徑資訊。此路徑資訊不包含查詢參數,例如:/pushworksserver/ push/apps/tags
    requestMethod HTTP 動詞,例如: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 以及更新版本]maxHeap [17.0.0.1 以及更新版本]JVM 容許的上限資料堆
    duration 記憶體回收的執行持續時間(微秒)
    gcType 記憶體回收事件的類型(例如:區域、廣域)
    reason 記憶體回收的原因

在 Docker 中執行 Liberty 的情況下使用日誌收集器

Liberty 伺服器在 Docker 儲存器或其他虛擬化環境中執行時,hostNameserverName 會設為如下:

hostName 欄位會設為下列第一個可用值:
  • CONTAINER_HOST 環境變數的值
  • ${defaultHostName} Liberty 配置變數的值
  • 軟體開發套件 (JDK) 所報告的標準主機名稱
serverName 欄位會設為下列第一個可用值:
  • CONTAINER_NAME 環境變數的值
  • ${wlp.server.name} Liberty 配置變數的值

Liberty 伺服器在「IBM Cloud 儲存器服務」中執行時,已為您設定 CONTAINER_HOST 和 CONTAINER_NAME。

Liberty 伺服器在 Liberty Docker 群體中執行時,已為您設定 CONTAINER_HOST 和 CONTAINER_NAME。

當在 Docker 儲存器或您管理的其他虛擬環境中執行 Liberty 伺服器時,請在您執行映像檔時,設定 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