配置日志

编辑

heartbeat.yml 配置文件中的 logging 部分包含用于配置日志输出的选项。日志系统可以将日志写入 syslog 或轮换日志文件。如果未显式配置日志,则将使用文件输出。

logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/heartbeat
  name: heartbeat
  keepfiles: 7
  permissions: 0640

除了在配置文件中设置日志选项外,您还可以从命令行修改日志输出配置。请参阅命令参考

当 Heartbeat 在带有 systemd 的 Linux 系统上运行时,默认情况下会使用 -e 命令行选项,这会使其将所有日志输出写入 stderr,以便可以被 journald 捕获。其他输出将被禁用。请参阅Heartbeat 和 systemd 以了解更多信息并学习如何更改此设置。

配置选项

编辑

您可以在 heartbeat.yml 配置文件的 logging 部分中指定以下选项

logging.to_stderr

编辑

当为 true 时,将所有日志输出写入标准错误输出。这等效于使用 -e 命令行选项。

logging.to_syslog

编辑

当为 true 时,将所有日志输出写入 syslog。

Windows 不支持此选项。

logging.to_eventlog

编辑

当为 true 时,将所有日志输出写入 Windows 事件日志。

logging.to_files

编辑

当为 true 时,将所有日志输出写入文件。当达到日志文件大小限制时,日志文件会自动轮换。

仅当有日志输出时,Heartbeat 才会创建日志文件。例如,如果将日志level设置为 error 并且没有错误,则在指定的日志目录中将不会有日志文件。

logging.level

编辑

最小日志级别。可以是 debuginfowarningerror 之一。默认日志级别为 info

debug
记录调试消息,包括所有刷新事件的详细打印输出。还记录信息性消息、警告、错误和严重错误。当日志级别为 debug 时,您可以指定一个 selectors 列表,以显示特定组件的调试消息。如果未指定选择器,则使用 * 选择器显示所有组件的调试消息。
info
记录信息性消息,包括已发布的事件数。还记录任何警告、错误或严重错误。
warning
记录警告、错误和严重错误。
error
记录错误和严重错误。

logging.selectors

编辑

由不同 Heartbeat 组件使用的仅调试选择器标签列表。使用 * 为所有组件启用调试输出。使用 publisher 显示与事件发布相关的调试消息。

可用选择器列表可能在不同版本之间发生变化,因此请避免创建依赖于特定选择器的测试。

要查看哪些选择器可用,请在调试模式下运行 Heartbeat(在配置中设置 logging.level: debug)。选择器名称出现在日志级别之后,并用方括号括起来。

要配置多个选择器,请使用以下 YAML 列表语法

logging.selectors: [ harvester, input ]

要在命令行覆盖选择器,请使用 -d 全局标志(-d 也会设置调试日志级别)。有关详细信息,请参阅命令参考

logging.metrics.enabled

编辑

默认情况下,Heartbeat 会定期记录其在上一期间发生变化的内部指标。对于每个发生变化的指标,将记录该期间开始时的值与该值的增量。此外,所有非零内部指标的总值将在关闭时记录。设置为 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

请注意,我们目前不为内部指标提供向后兼容性保证,因此它们也没有记录在案。

logging.metrics.period

编辑

记录内部指标的周期。默认为 30 秒。

logging.metrics.namespaces

编辑

要在日志中报告的指标命名空间列表。默认为 [stats]stats 包含常规 Beat 指标。datasetinputs 可能存在于某些 Beats 中,并且包含模块或输入指标。

logging.files.path

编辑

写入日志文件的目录。默认值为日志路径。有关详细信息,请参阅目录布局部分。

logging.files.name

编辑

写入日志的文件的名称。默认为 *heartbeat*。

logging.files.rotateeverybytes

编辑

日志文件的最大大小。如果达到限制,将生成新的日志文件。默认大小限制为 10485760 (10 MB)。

logging.files.keepfiles

编辑

要在磁盘上保留的最新轮换日志文件的数量。较旧的文件将在日志轮换期间删除。默认值为 7。keepfiles 选项必须在 2 到 1024 个文件范围内。

logging.files.permissions

编辑

轮换日志文件时应用的权限掩码。默认值为 0600。permissions 选项必须是以八进制表示的有效 Unix 样式文件权限掩码。在 Go 中,八进制表示的数字必须以 *0* 开头。

允许的最大权限掩码为 0640。如果通过此设置指定了更高的权限掩码,则它将受 0027 的 umask 约束。

Windows 不支持此选项。

示例

  • 0640:授予文件所有者读取和写入权限,并授予与该文件关联的组成员读取权限。
  • 0600:授予文件所有者读取和写入权限,并且不授予所有其他人员任何访问权限。

logging.files.interval

编辑

除了基于大小的轮换外,还可以在时间间隔内启用日志文件轮换。间隔必须至少为 1 秒。1 分钟、1 小时、24 小时、7*24 小时、30*24 小时和 365*24 小时的值与本地系统时钟报告的分钟、小时、天、周、月和年对齐。所有其他间隔均从 Unix 纪元开始计算。默认为禁用。

logging.files.rotateonstartup

编辑

如果启动时日志文件已存在,请立即将其轮换并开始写入新文件,而不是附加到现有文件。默认为 true。

logging.files.redirect_stderr [预览] 此功能为技术预览版,可能会在以后的版本中更改或删除。Elastic 将努力修复任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。

编辑

当为 true 时,打印到 Heartbeat 标准错误输出的诊断消息也会记录到日志文件中。这在 Heartbeat 由于 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 [示例] logp/core_test.go:16 一些消息

2017-12-17T18:54:16.242-0500 INFO [示例] logp/core_test.go:19 一些消息 {"x": 1}

event_data 记录器的配置选项

编辑

某些输出将在错误(如 Elasticsearch 输出中的索引错误)时记录原始事件,为防止将原始事件(可能包含敏感信息)与其他日志消息一起记录,将使用不同的日志文件,仅用于包含原始事件的日志条目。它将使用默认记录器的相同级别、选择器和所有其他配置,但它将有自己的文件配置。

为原始事件提供不同的日志文件还可以防止事件数据淹没常规日志文件。

无论默认记录器输出配置如何,原始事件都将 始终 记录到由 logging.event_data.files 配置的文件中。

logging.event_data.files.path

编辑

写入日志文件的目录。默认值为日志路径。有关详细信息,请参阅目录布局部分。

logging.event_data.files.name

编辑

写入日志的文件的名称。默认为 *heartbeat*-events-data。

logging.event_data.files.rotateeverybytes

编辑

日志文件的最大大小。如果达到限制,将生成新的日志文件。默认大小限制为 5242880 (5 MB)。

logging.event_data.files.keepfiles

编辑

要在磁盘上保留的最新轮换日志文件的数量。较旧的文件将在日志轮换期间删除。默认值为 2。keepfiles 选项必须在 2 到 1024 个文件范围内。

logging.event_data.files.permissions

编辑

轮换日志文件时应用的权限掩码。默认值为 0600。permissions 选项必须是以八进制表示的有效 Unix 样式文件权限掩码。在 Go 中,八进制表示的数字必须以 *0* 开头。

允许的最大权限掩码为 0640。如果通过此设置指定了更高的权限掩码,则它将受 0027 的 umask 约束。

Windows 不支持此选项。

示例

  • 0640:授予文件所有者读取和写入权限,并授予与该文件关联的组成员读取权限。
  • 0600:授予文件所有者读取和写入权限,并且不授予所有其他人员任何访问权限。

logging.event_data.files.interval

编辑

除了基于大小的轮换外,还可以在时间间隔内启用日志文件轮换。间隔必须至少为 1 秒。1 分钟、1 小时、24 小时、7*24 小时、30*24 小时和 365*24 小时的值与本地系统时钟报告的分钟、小时、天、周、月和年对齐。所有其他间隔均从 Unix 纪元开始计算。默认为禁用。

logging.event_data.files.rotateonstartup

编辑

如果启动时日志文件已存在,请立即将其轮换并开始写入新文件,而不是附加到现有文件。默认为 false。