使用 Liberty 中的 Logstash 收集器功能部件可从 Liberty 服务器收集日志和其他事件,并将这些事件发送至远程 Logstash 服务器。收集的事件可用于日志分析和故障诊断用途。
开始之前
针对下列产品测试了 logstashCollector-1.0 功能部件:
- Logstash V2.x、Elasticsearch V2.x 和 Kibana V4.x
Logstash V5.3.x、Elasticsearch V5.3.x 和 Kibana V5.3.x
可以将 logstashCollector-1.0 功能部件与运行 Logstash 中的任何可用输出插件的 Logstash 服务器配合使用。但是,许多用户选择将 Logstash 与 Elasticsearch 和 Kibana 配合使用,以提供完整的日志合并和分析功能。有关更多信息,请参阅 Elastic Web 站点。
过程
- 遵循 Elastic 中的指示信息来设置 Logstash。
- 为用于 Logstash 的 SSL 创建或获取证书和密钥对文件。
OpenSSL 的以下示例命令将生成证书和密钥对。根据需要定制密钥的有效天数。
openssl req -x509 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -days 365 -nodes
- 对于 Logstash 和 Elasticsearch 用户,从此存储库中下载样本 Logstash 配置文件和索引模板文件。
- 对于 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 V2.x 用户,(可选)定制 _ttl 缺省值,以指示将每种事件类型的记录保留在 liberty_logstash_template.json 文件中的毫秒数。
- 在您希望收集其中的事件的每个 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 个字符。以下示例将 maxFieldLength 参数设置为 logstashCollector 元素中的 3000 个字符。对于无限制的字符数,请将 maxFieldLength 设置为 0(零)或者 -1。
您可以限制每秒为每一类事件(message、trace、accessLog、ffdc 和
garbageCollection)发送的最大事件数。缺省的最大事件数为
0,这表示不进行调速。如果将 maxEvents
设置为大于 0,那么将限制每秒发送的事件数。maxEvents
值必须是 0 与 2147483647 之间的整数。
![[17.0.0.1 and later]](../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 Web 站点以了解指示信息。
- 启动 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 文件中添加。