配置日志
Elastic Stack
这些配置选项仅与 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 epoch 计算得出。 默认为禁用。
如果在启动时日志文件已存在,请立即轮换它并开始写入新文件,而不是附加到现有文件。 默认为 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 unnamed global logger
2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:16 some message
2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:19 some message {"x": 1}