加载中

配置日志

Elastic Stack

注意

supported deployment methods

这些配置选项仅与 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 并且没有错误,则在为日志指定的目录中将不会有日志文件。

最低日志级别。 可以是 debuginfowarningerror 之一。 默认日志级别为 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:授予文件所有者读写访问权限,并且不授予所有其他人的访问权限。

除了基于大小的轮换之外,还可以在时间间隔内启用日志文件轮换。 时间间隔必须至少为 1s1m1h24h7*24h30*24h365*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}

© . All rights reserved.