請利用 Liberty 中的 Logstash 收集器特性來收集 Liberty 伺服器的日誌和其他事件,將它們傳送至遠端 Logstash 伺服器。收集的事件可用來進行日誌分析和疑難排解。
開始之前
已使用下列產品測試過 logstashCollector-1.0 特性:
- Logstash 2.x 版、Elasticsearch 2.x 版,以及 Kibana 4.x 版
Logstash 5.3.x 版、Elasticsearch 5.3.x 版,以及 Kibana 5.3.x 版
logstashCollector-1.0 特性可以與 Logstash 伺服器(在執行時會使用來自 Logstash 的任何可用的輸出外掛程式)搭配使用。不過,有很多使用者會選擇將 Logstash 與
Elasticsearch 和 Kibana 搭配使用,以提供完整的日誌合併與分析機能。如需相關資訊,請參閱 Elastic 網站。
程序
- 遵循 Elastic 中的指示,來設定 Logstash。
- 建立或取得適用於 Logstash 的 SSL 憑證和金鑰組檔案。
以下的 OpenSSL 範例指令會產生憑證和金鑰組。請視需要自訂金鑰的有效天數。
openssl req -x509 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -days 365 -nodes
- 若為 Logstash 和 Elasticsearch 使用者,請從這個儲存庫下載範例 Logstash 配置檔和索引範本檔。
- 根據 Readme 檔,針對您的 Elastic 堆疊版本,下載 Logstash 配置檔 liberty_logstash.conf 和索引範本檔
liberty_logstash_template.json。
- 在 liberty_logstash.conf 檔中,自訂 lumberjack
ssl_certificate 和 ssl_key 路徑以及 Elasticsearch
hosts (Elasticsearch_host_name:port_number) 值。
- 若為 Elasticsearch 2.x 版使用者,可以選擇性地在 liberty_logstash_template.json 檔中自訂 _ttl 預設值,指出每一種事件類型之記錄的保留毫秒數。
- 針對您想從中收集事件的每一部 Liberty 伺服器,完成下列步驟。
- 取得或建立 Liberty 伺服器的金鑰儲存庫。如果要建立自簽憑證,請使用下列指令。視需要自訂伺服器名稱、密碼和主體。
d:\wlp\bin\securityUtility createSSLCertificate --server=myServerName --password="Liberty" --subject=CN=myHostname,OU=defaultServer,O=ibm,C=us
- 將步驟 2 中的 logstash.crt 檔,匯入至您伺服器中的
trust.jks 檔。視需要自訂
wlp_install_dir 和伺服器名稱。當提示您輸入密碼時,請使用步驟 4a 中的憑證密碼。
d:\java\bin\keytool -import -noprompt -alias logstash -file logstash.crt -keystore wlp_install_dir\usr\servers\myServerName\resources\security\trust.jks -storepass Liberty
- 執行下列指令,以安裝 logstashcollector-1.0 特性:
d:\wlp\bin\installUtility install logstashcollector-1.0
- 利用新增下列內容,在 Liberty 中配置 server.xml 檔中的 Logstash 收集器。視需要自訂 logstashCollector 的來源、主機名稱和埠清單。
您可以針對訊息或追蹤事件中的訊息欄位,或針對 FFDC 事件中的堆疊追蹤,變更容許的字元數目上限。預設上限是 2048 個字元。下列範例是在 logstashCollector 元素中,將
maxFieldLength 參數設為 3000 個字元。如果希望字元數目不受限,請將
maxFieldLength 設為 0(零)或 -1。
您可以針對每一種類型的事件(message、trace、accessLog、ffdc、garbageCollection),限制每秒所能傳送的事件數目上限。預設的事件數目上限是
0,表示不套用節流控制。如果所設定的
maxEvents 大於 0,表示會限制每秒所傳送的事件數目。maxEvents 值必須在
0 與 2147483647 之間。
![[17.0.0.1 以及更新版本]](../ng_v17001plus.gif)
此外,您可以新增自訂標籤,以便裝飾從伺服器傳來的事件。在下列範例中,
logstashCollector 元素中有兩個
tag 元素。
註: 在「管理中心」中使用的標籤,與
logstashCollector/bluemixLogCollector 中使用的標籤無關。
<featureManager>
<feature>logstashCollector-1.0</feature>
</featureManager>
<keyStore id="defaultKeyStore" password="Liberty" />
<keyStore id="defaultTrustStore" location="trust.jks" password="Liberty" />
<ssl id="mySSLConfig" trustStoreRef="defaultTrustStore" keyStoreRef="defaultKeyStore" />
<logstashCollector
source="message,trace,garbageCollection,ffdc,accessLog"
hostName="localhost"
port="5043"
sslRef="mySSLConfig"
maxEvents="10"
maxFieldLength="3000">
<tag>serverRackA5</tag>
<tag>billingAppTeam</tag>
</logstashCollector>
追蹤和存取日誌都是高容量日誌,需要更多的網路、CPU 和儲存體資源來進行收集。
- 啟用 HTTP 存取記載,並使用 '%h %u %t "%r" %s %b %D %{User-agent}i'
日誌格式。
- 啟動 Elasticsearch、Logstash 和 Kibana。如需相關指示,請參閱 Elastic 網站。
- 啟動 Liberty 伺服器,並產生一些事件。
- 在瀏覽器中開啟 Kibana,並建立索引。
- 若為 Kibana 5,請按一下,將時間欄位名稱設為 datetime,然後按一下建立。
- 若為 Kibana 4,請按一下,將時間欄位名稱設為 datetime,然後按一下建立。
- 從這個儲存庫,下載範例儀表板。
- 將儀表板匯入至 Kibana。
- 若為 Kibana 5,請按一下。
- 若為 Kibana 4,請按一下。
- 檢視儀表板。
- 若為 Kibana 5,請按一下,然後選取儀表板。
- 若為 Kibana 4,請按一下,然後選取儀表板。
結果
您已將 Liberty 伺服器配置成會將事件傳送至 Logstash 伺服器,現在,您可以利用 Kibana,在 Liberty 儀表板中檢視事件。
如果您啟用 Logstash 收集器,來獲取記憶體回收事件,對於 z/OS® Java™ 虛擬機器 (JVM),不見得能適當啟用 IBM® 工具的延遲連接。如果要修正此問題,請針對 JVM 呼叫,新增系統內容與值 -Dcom.ibm.tools.attach.enable=yes。請直接新增它,而成為
Java 執行的一部分,或是新增到 jvm.options 檔內。