Logstash 和 Bluemix 日誌收集器
Liberty 會在執行時期產生各種事件,例如,日誌事件、追蹤事件、首次失敗資料擷取 (FFDC) 事件、存取日誌事件,以及記憶體回收事件。 將所有伺服器的事件合併起來,以便搜尋、過濾及分析事件,會很有用;當您管理許多伺服器時,或當您在不同平台(例如,在專用硬體上,或在雲端)上執行伺服器時,尤其如此。 當使用 Liberty 的環境沒有用於問題判斷資料的持續性檔案儲存體時,將事件儲存在個別伺服器上,也很有用。
Liberty 提供 Logstash 和 Bluemix 日誌收集器特性,來協助您從遠端合併事件。收集器會擷取進行中的事件,將它們分成若干欄位,然後將事件安全轉遞至所配置的 Logstash 或 Bluemix 日誌收集伺服器。收集器可配置成傳送下列一或多種類型的資料:
- 訊息日誌事件
- 追蹤日誌事件
- HTTP 存取日誌事件(從 Liberty 伺服器)
- FFDC 日誌事件
- 記憶體回收事件(僅供 IBM JDK 使用)
Logstash 收集器
Logstash 收集器特性(logstashCollector-1.0)會將事件傳送至您提供的 Logstash 伺服器。
Logstash 可以與 Elasticsearch 搜尋伺服器及 Kibana 儀表板(全由您提供、設定及管理)一起使用,以提供全企業的日誌或其他事件的合併視圖。 當利用 Logstash 收集器來轉遞事件時,您不需要在 Liberty 伺服器機器上設定個別的程序或代理程式。
事件結構
收集器會將每個事件當作一組欄位名稱值配對來傳送。 每個不同事件類型都有它自己的一組欄位。 當建立您自己的 Kibana 儀表板時,知道每個事件有哪些欄位會很有用。
logstashCollector-1.0 欄位名稱 | 欄位說明 |
---|---|
type | 用來識別事件類型的字串 |
datetime | 事件的發生時間 |
hostName | 事件來源之伺服器的主機名稱 如需主機名稱設定規則的相關資訊,請參閱將 Logstash 和 Bluemix 日誌收集器與正在 Docker 中執行的 Liberty 搭配使用。 |
wlpUserDir | 事件來源之伺服器的使用者目錄,例如 D:\wlp\usr |
serverName | 事件來源之伺服器的伺服器名稱 如需伺服器名稱設定規則的相關資訊,請參閱將 Logstash 和 Bluemix 日誌收集器與正在 Docker 中執行的 Liberty 搭配使用 |
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 動詞,例如: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 記憶體回收事件的類型(例如:區域、廣域) reason 記憶體回收的原因
將 Logstash 和 Bluemix 日誌收集器與正在 Docker 中執行的 Liberty 搭配使用
當 Liberty 伺服器在 Docker 儲存器或其他虛擬化環境中執行時, hostName 和 serverName 會設為如下:
- CONTAINER_HOST 環境變數的值
- ${defaultHostName} Liberty 配置變數的值
- 軟體開發套件 (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