配置日志记录
编辑配置日志记录编辑
packetbeat.yml
配置文件中的 logging
部分包含用于配置日志记录输出的选项。日志记录系统可以将日志写入 syslog 或轮换日志文件。如果未明确配置日志记录,则使用文件输出。
logging.level: info logging.to_files: true logging.files: path: /var/log/packetbeat name: packetbeat keepfiles: 7 permissions: 0640
除了在配置文件中设置日志记录选项之外,您还可以从命令行修改日志记录输出配置。请参阅 命令参考。
当 Packetbeat 在具有 systemd 的 Linux 系统上运行时,它默认情况下使用 -e
命令行选项,这使它将所有日志记录输出写入 stderr,以便 journald 可以捕获它们。其他输出已禁用。请参阅 Packetbeat 和 systemd 了解有关此内容的更多信息以及如何更改它。
配置选项编辑
您可以在 packetbeat.yml
配置文件的 logging
部分中指定以下选项
logging.to_stderr
编辑
如果为 true,则将所有日志记录输出写入标准错误输出。这等效于使用 -e
命令行选项。
logging.to_syslog
编辑
如果为 true,则将所有日志记录输出写入 syslog。
此选项在 Windows 上不受支持。
logging.to_eventlog
编辑
如果为 true,则将所有日志记录输出写入 Windows 事件日志。
logging.to_files
编辑
如果为 true,则将所有日志记录输出写入文件。日志文件在达到日志文件大小限制时会自动轮换。
Packetbeat 仅在有日志记录输出时才会创建日志文件。例如,如果您将日志 level
设置为 error
,并且没有错误,则在为日志指定的目录中将没有日志文件。
logging.level
编辑
最小日志级别。可以是 debug
、info
、warning
或 error
。默认日志级别为 info
。
-
调试
- 记录调试消息,包括所有已刷新事件的详细打印输出。还会记录信息消息、警告、错误和严重错误。当日志级别为
debug
时,您可以指定selectors
列表以显示特定组件的调试消息。如果没有指定选择器,则使用*
选择器以显示所有组件的调试消息。 -
信息
- 记录信息消息,包括已发布的事件数。还会记录任何警告、错误或严重错误。
-
警告
- 记录警告、错误和严重错误。
-
错误
- 记录错误和严重错误。
logging.selectors
编辑
不同 Packetbeat 组件使用的调试专用选择器标签列表。使用 *
以启用所有组件的调试输出。使用 publisher
以显示与事件发布相关的调试消息。
可用选择器列表可能会在不同版本之间发生变化,因此避免创建依赖于特定选择器的测试。
要查看哪些选择器可用,请以调试模式运行 Packetbeat(在配置中设置 logging.level: debug
)。选择器名称出现在日志级别之后,并用方括号括起来。
要配置多个选择器,请使用以下 YAML 列表语法
logging.selectors: [ harvester, input ]
要从命令行覆盖选择器,请使用 -d
全局标志(-d
还会设置调试日志级别)。有关更多信息,请参阅 命令参考。
logging.metrics.enabled
编辑
默认情况下,Packetbeat 会定期记录其在上一周期内发生变化的内部指标。对于每个发生变化的指标,都会记录其与周期开始时的值的增量。此外,在关闭时还会记录所有非零内部指标的总值。将其设置为 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 指标。 dataset
和 inputs
可能会出现在某些 Beat 中,并包含模块或输入指标。
logging.files.path
编辑
写入日志文件的目录。默认值为日志路径。有关详细信息,请参阅 目录布局 部分。
logging.files.name
编辑
写入日志文件的名称。默认值为 packetbeat。
logging.files.rotateeverybytes
编辑
日志文件的大小限制。如果达到限制,则会生成新的日志文件。默认大小限制为 10485760(10 MB)。
logging.files.keepfiles
编辑
磁盘上要保留的最新的轮换日志文件的数量。在日志轮换期间,会删除较旧的文件。默认值为 7。 keepfiles
选项的值必须在 2 到 1024 个文件之间。
logging.files.permissions
编辑
在轮换日志文件时要应用的权限掩码。默认值为 0600。 permissions
选项必须是使用八进制表示法表示的有效 Unix 风格文件权限掩码。在 Go 中,八进制表示法中的数字必须以 0 开头。
允许的最宽松的掩码为 0640。如果通过此设置指定了更高的权限掩码,它将受到 umask 0027 的约束。
此选项在 Windows 上不受支持。
示例
- 0640:向文件所有者授予读写权限,并向与文件关联的组的成员授予读取权限。
- 0600:向文件所有者授予读写权限,并拒绝所有其他用户的访问权限。
logging.files.interval
编辑
除了基于大小的轮换之外,还启用基于时间间隔的日志文件轮换。间隔必须至少为 1 秒。1m、1h、24h、7*24h、30*24h 和 365*24h 的值会与本地系统时钟报告的分钟、小时、天、周、月和年对齐。所有其他间隔都是从 Unix 纪元计算的。默认情况下已禁用。
logging.files.rotateonstartup
编辑
如果日志文件在启动时已存在,则立即将其轮换并开始写入新文件,而不是追加到现有文件。默认值为 true。
logging.files.redirect_stderr
[预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将致力于解决任何问题,但技术预览中的功能不受官方 GA 功能的 SLA 支持。 编辑
如果为 true,则打印到 Packetbeat 的标准错误输出的诊断消息也将记录到日志文件中。这在 Packetbeat 意外终止时可能很有用,因为 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}