第 9 章 监控数据网格服务器
9.1. 使用 Data Grid 服务器日志
Data Grid 使用 Apache Log4j 2 提供可配置的日志机制,用于捕获环境和记录缓存操作的详细信息,以进行故障排除和根本原因分析。
9.1.1. Data Grid 日志文件
Data Grid 将日志消息写入以下目录:$RHDG_HOME/${infinispan.server.root}/log
server.log
-
以人类可读格式的消息,包括与服务器启动相关的引导日志。
在启动服务器时,Data Grid 默认创建此文件。 server.log.json
-
JSON 格式的消息,允许您解析和分析 Data Grid 日志。
在启用JSON-FILE
附加程序时,Data Grid 会创建此文件。
9.1.2. 配置数据网格日志属性
您可以使用 log4j2.xml
配置 Data Grid 日志,该日志在 Log4j 2 manual 中进行了描述。
流程
-
使用任何文本编辑器打开
$RHDG_HOME/${infinispan.server.root}/conf/log4j2.xml
。 - 根据需要更改日志记录配置。
-
保存并关闭
log4j2.xml
。
9.1.2.1. 日志级别
日志级别表示消息的性质和严重性。
日志级别 | 描述 |
---|---|
| 细粒度调试消息,通过应用程序捕获单个请求的流。 |
| 常规调试消息,与单个请求无关。 |
| 有关应用程序整体进度的消息,包括生命周期事件。 |
| 可能导致错误或降低性能的事件。 |
| 可能会阻止操作或激活成功但不会阻止应用程序运行的错误条件。 |
| 可能导致关键服务失败和应用程序关闭的事件。 |
除了上面提供的单个消息级别外,配置还允许另外两个值: ALL
包含所有消息,OFF
排除所有消息。
9.1.2.2. Data Grid Log Categories
Data Grid 为 INFO
,WARN
,ERROR
,FATAL
级别提供按功能区域组织日志的类别。
org.infinispan.CLUSTER
- 特定于 Data Grid 集群的消息,其中包括状态传输操作、重新平衡事件、分区等。
org.infinispan.CONFIG
- 特定于 Data Grid 配置的消息。
org.infinispan.CONTAINER
- 特定于过期和驱除操作的数据容器、缓存侦听器通知、事务等。
org.infinispan.PERSISTENCE
- 特定于缓存加载程序和存储的消息。
org.infinispan.SECURITY
- 特定于 Data Grid 安全性的消息。
org.infinispan.SERVER
- 特定于 Data Grid 服务器的消息。
org.infinispan.XSITE
- 特定于跨站点复制操作的消息。
9.1.2.3. 日志应用程序
日志附加程序定义 Data Grid 记录日志消息的方式。
- 控制台
-
将日志消息写入主机标准输出(
stdout
)或标准错误(stderr
)流。
默认使用org.apache.logging.log4j.core.appender.ConsoleAppender
类。 - FILE
-
将日志消息写入文件。
默认使用org.apache.logging.log4j.core.appender.RollingFileAppender
类。 - JSON-FILE
-
将日志消息写入 JSON 格式的文件。
默认使用org.apache.logging.log4j.core.appender.RollingFileAppender
类。
9.1.2.4. 日志模式
CONSOLE
和 FILE
附加程序使用 PatternLayout
来根据 模式 格式化日志消息。
例如,FILE appender 中的默认模式:%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t)[%c Array] %m%throwable%n
-
%d{yyyy-MM-dd HH:mm:ss,SSS}
添加当前时间和日期。 -
%-5p
指定日志级别,与右侧一致。 -
%
T 添加当前线程的名称。 -
%c consumption
添加日志记录类别的短名称。 -
%
M 添加日志消息。 -
%throwable
添加异常堆栈追踪。 -
%n
添加新行。
PatternLayout
文档 完全描述了模式。
9.1.2.5. 启用并配置 JSON 日志处理程序
Data Grid 提供了一个 JSON 日志处理程序,以 JSON 格式写入消息。
前提条件
确保 Data Grid 未在运行。您无法动态启用日志处理程序。
流程
当您启动 Data Grid 时,它会在以下文件中将每个日志消息写为 JSON 映射:$RHDG_HOME/${infinispan.server.root}/log/server.log.json
9.1.3. 访问日志
热 Rod 和 REST 端点可使用以下类别将所有入站客户端请求记录为日志条目:
-
org.infinispan.HOTROD_ACCESS_LOG
日志记录类别用于 Hot Rod 端点。 -
org.infinispan.REST_ACCESS_LOG
日志记录类别用于 REST 端点。
9.1.3.1. 启用访问日志
默认情况下,禁用 Hot Rod 和 REST 端点的访问日志。要启用任一日志记录类别,请在 Data Grid 日志记录配置中将级别设置为 TRACE
,如下例所示:
<Logger name="org.infinispan.HOTROD_ACCESS_LOG" additivity="false" level="TRACE"> <AppenderRef ref="HR-ACCESS-FILE"/> </Logger>
9.1.3.2. 访问日志属性
访问日志的默认格式如下:
%X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}] "%X{method} %m %X{protocol}" %X{status} %X{requestSize} %X{responseSize} %X{duration}%n
以上格式会创建日志条目,如下所示:
127.0.0.1 - [DD/MM/YYYY:HH:MM:SS +0000] "PUT /rest/v2/caches/default/key HTTP/1.1" 404 5 77 10
日志记录属性使用 %X{name}
表示法,并允许您修改访问日志的格式。以下是默认的日志记录属性:
属性 | 描述 |
---|---|
|
|
| 主体名称,如果使用身份验证。 |
|
使用的方法。 |
|
使用的协议。 |
|
REST 端点的 HTTP 状态代码。Hot Rod 端点的 |
| 请求的大小,以字节为单位。 |
| 响应的大小(以字节为单位)。 |
| 服务器处理请求的毫秒数。 |
使用前缀为 h:
的标头名称来记录请求中包含的标头;例如: %X{h:User-Agent}
。