配置日志
这些配置选项仅适用于 APM Server 二进制用户。通过 Fleet 管理的用户应参阅 查看 Elastic Agent 日志,了解如何查看日志以及更改 Elastic Agent 的日志级别。
apm-server.yml 配置文件中的 logging 部分包含用于配置日志输出的选项。
日志系统可以将日志写入 syslog 或轮转日志文件。如果未显式配置日志记录,则默认使用文件输出。
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/apm-server
name: apm-server
keepfiles: 7
permissions: 0640
除了在配置文件中设置日志选项外,您还可以从命令行修改日志输出配置。请参阅 命令参考。
当 APM Server 运行在使用 systemd 的 Linux 系统上时,它默认使用 -e 命令行选项,这会使其将所有日志输出写入 stderr,以便被 journald 捕获。其他输出将被禁用。请参阅 APM Server 和 systemd 以了解更多信息以及如何更改此设置。
您可以在 apm-server.yml 配置文件中的 logging 部分指定以下选项:
为 true 时,将所有日志输出写入标准错误输出。这相当于使用 -e 命令行选项。
为 true 时,将所有日志输出写入 syslog。
Windows 不支持此选项。
为 true 时,将所有日志输出写入 Windows 事件日志。
为 true 时,将所有日志输出写入文件。当达到日志文件大小限制时,日志文件会自动轮转。
只有存在日志输出时,APM Server 才会创建日志文件。例如,如果您将日志 level 设置为 error 且没有发生错误,则在指定的日志目录中将不会有日志文件。
最低日志级别。可以是 debug、info、warning 或 error 之一。默认日志级别为 info。
debug- 记录调试消息,包括所有已刷新事件的详细打印输出。同时记录信息性消息、警告、错误和严重错误。当日志级别为
debug时,您可以指定一个selectors列表以显示特定组件的调试消息。如果未指定选择器,则使用*选择器来显示所有组件的调试消息。 info- 记录信息性消息,包括已发布的事件数。同时记录任何警告、错误或严重错误。
warning- 记录警告、错误和严重错误。
error- 记录错误和严重错误。
不同 APM Server 组件使用的仅限调试的选择器标签列表。使用 * 为所有组件启用调试输出。使用 publisher 显示与事件发布相关的调试消息。
可用选择器列表可能会在不同版本之间更改,因此请避免创建依赖于特定选择器的测试。
要查看哪些选择器可用,请以调试模式运行 APM Server(在配置中设置 logging.level: debug)。选择器名称显示在日志级别之后并包含在括号中。
要配置多个选择器,请使用以下 YAML 列表语法
logging.selectors: [ harvester, input ]
要在命令行中覆盖选择器,请使用 -d 全局标志(-d 还会设置调试日志级别)。有关更多信息,请参阅 命令参考。
默认情况下,APM Server 会定期记录其在上一周期中发生更改的内部指标。对于每个更改的指标,系统会记录与该周期开始时值的差值。此外,在关闭时会记录所有非零内部指标的总值。将其设置为 false 可禁用此行为。默认值为 true。
以下是一个示例日志行
2017-12-17T19:17:42.667-0500 INFO [metrics] log/log.go:110 Non-zero metrics in the last 30s: beat.info.uptime.ms=30004 beat.memstats.gc_next=5046416
请注意,我们目前不保证内部指标的向后兼容性,因此也没有对其进行文档记录。
记录内部指标的时间间隔。默认值为 30s。
写入日志文件的目录。默认值为日志路径。有关详细信息,请参阅 安装布局 部分。
写入日志的文件名。默认值为 apm-server。
日志文件的最大大小。如果达到限制,将生成一个新的日志文件。默认大小限制为 10485760 (10 MB)。
要在磁盘上保留的最近轮转日志文件的数量。在日志轮转期间会删除较旧的文件。默认值为 7。keepfiles 选项必须在 2 到 1024 个文件之间。
轮转日志文件时应用的权限掩码。默认值为 0600。permissions 选项必须是以八进制表示法表示的有效 Unix 风格文件权限掩码。在 Go 中,八进制表示法中的数字必须以 0 开头。
允许的最大权限掩码为 0640。如果通过此设置指定了更高的权限掩码,则它将受 0027 的 umask 限制。
示例
- 0640:赋予文件所有者读写权限,并赋予与文件关联的组成员读取权限。
- 0600:赋予文件所有者读写权限,其他人无权访问。
除了基于大小的轮转外,还启用基于时间间隔的日志文件轮转。时间间隔必须至少为 1s。1m、1h、24h、7*24h、30*24h 和 365*24h 的值与本地系统时钟报告的分钟、小时、天、周、月和年边界对齐。所有其他时间间隔均从 Unix 纪元开始计算。默认禁用。
如果启动时日志文件已经存在,则立即对其进行轮转并开始写入新文件,而不是追加到现有文件中。默认值为 true。
如果为 true,打印到 APM Server 标准错误输出的诊断消息也将记录到日志文件中。在 APM Server 由于 Go 运行时检测到错误而意外终止且日志文件中没有诊断信息的情况下,这会非常有用。此功能仅在记录到文件时(logging.to_files 为 true)可用。默认禁用。
每个日志输出的日志格式通常是相同的。唯一的例外是 syslog 输出,其中消息中不包含时间戳,因为 syslog 会添加自己的时间戳。
每个日志消息由以下部分组成
- ISO8601 格式的时间戳
- 级别
- 括号中包含的日志记录器名称(可选)
- 调用者的文件名和行号
- 消息
- 以 JSON 编码的结构化数据(可选)
以下是一些示例
2017-12-17T18:54:16.241-0500 INFO logp/core_test.go:13 未命名的全局日志记录器
2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:16 某条消息
2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:19 某条消息 {"x": 1}