Logstash 和 Bluemix 日志收集器
Liberty 在运行时生成各种事件,例如日志事件、跟踪事件、首次失败数据捕获 (FFDC) 事件、访问日志事件和垃圾回收事件。Logstash 收集器可帮助您将来自所有服务器的事件进行合并,以便能够对事件进行搜索、过滤和分析,特别是当您管理许多服务器时,或在不同平台上(例如在专用硬件上和在云中)运行服务器时。如果您使用 Liberty 时所在环境缺少问题确定数据所使用的持久文件存储,那么 Logstash 收集器也可帮助您将事件存储在单独的服务器上。
Liberty 提供 Logstash 和 Bluemix 日志收集器功能部件,帮助您远程合并事件。这些收集器捕获正在进行的事件、将事件划分成多个字段,并将事件安全地转发到已配置的 Logstash 或 Bluemix 日志收集服务器。这些收集器可配置为发送下列一种或多种类型的数据:
- 消息日志事件
- 跟踪日志事件
- HTTP 访问日志事件(来自 Liberty 服务器)
- FFDC 日志事件
- 垃圾回收事件(仅可用于 IBM JDK)
Logstash 收集器
Logstash 收集器功能部件(logstashCollector-1.0)将事件发送至您提供的 Logstash 服务器。
Logstash 可以与您提供、设置和管理的所有 Elasticsearch 搜索服务器和 Kibana 仪表板配合使用,以提供您整个企业中的日志或其他事件的统一视图。不需要在 Liberty 服务器上设置单独的进程或代理程序,Logstash 收集器也可转发事件。
事件结构
收集器将每个事件作为一组“字段名称/值”对发送。每个不同的事件类型都有自己的一组字段。当您创建自己的 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 = Fatal、E = Error、W = Warning、A = Audit、I = Info、O = SystemOut、R = SystemErr) 严重性指示符(FATAL、ERROR、WARNING、AUDIT、INFO、CONFIG、DETAIL)
messageId 日志行中的消息标识,可用于查找特定类型的错误,例如 SRVE0250I methodName 日志记录中的方法名称 className 日志记录中的类名 loggerName 日志记录中的记录器名称 threadId 日志行中的线程标识,例如 00000015。线程标识是字符串而非数字 message 日志记录中的消息,以消息标识开头 注: 启用二进制日志记录时,Logstash 收集器除了会转发缺省日志和跟踪框架,还会转发消息事件。
- 跟踪事件
表 3. 跟踪事件(类型:“liberty_trace”:) logstashCollector-1.0 字段名称 字段描述 severity 严重性指示符(1 = Fine、2 = Finer、3 = Finest、> = Entry、< = Exit) 严重性指示符(FINE、FINER、FINEST、ENTRY、EXIT) methodName 日志记录中的方法名称 className 日志记录中的类名 loggerName 日志记录中的记录器名称 threadId 日志行中的线程标识,例如 00000015。线程标识是字符串而非数字 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 点在类中的唯一标识 stackTrace FFDC 事件的堆栈跟踪 objectDetails FFDC 事件的事件详细信息 threadId FFDC 事件的线程标识 - 垃圾回收事件
表 6. 垃圾回收事件(类型:“liberty_gc”:) logstashCollector-1.0 字段名称 字段描述 heap 可用堆总计 usedHeap 已使用的堆数量 duration 运行垃圾回收的持续时间(以微秒为单位) gcType 垃圾回收事件的类型(例如,Nursery 和 Global) reason 垃圾回收的原因
将 Logstash 和 Bluemix 日志收集器与 Docker 中运行的 Liberty 配合使用
对于 Docker 容器或其他虚拟环境中正在运行的 Liberty 服务器,hostName 和 serverName 按如下所示进行设置:
- CONTAINER_HOST 环境变量的值
- ${defaultHostName} Liberty 配置变量的值
- 软件开发包 (JDK) 所报告的规范主机名
- CONTAINER_NAME 环境变量的值
- ${wlp.server.name} Liberty 配置变量的值
在 Bluemix 容器服务中运行 Liberty 服务器时,已为您设置 CONTAINER_HOST 和 CONTAINER_NAME。
在 Liberty Docker 集合体中运行 Liberty 服务器时,已为您设置 CONTAINER_HOST 和 CONTAINER_NAME。
docker run -d -e LICENSE=accept -e CONTAINER_NAME=yourContainerName -e CONTAINER_HOST=yourContainerHost --name=yourContainerName yourImageName