Journald 输入
编辑Journald 输入编辑
此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能支持 SLA 的约束。
journald
是一个收集和存储日志数据的系统服务。journald
输入读取此日志数据及其关联的元数据。
最简单的配置示例是从默认日志中读取所有日志。
filebeat.inputs: - type: journald id: everything
您可能希望每个服务都有单独的输入。您可以使用 include_matches
指定过滤表达式。列出可用于过滤消息的 journald 字段 的一个好方法是运行 journalctl -o json
以 JSON 格式输出日志和元数据。此示例收集来自 vault.service
systemd 单元的日志。
filebeat.inputs: - type: journald id: service-vault include_matches.match: - _SYSTEMD_UNIT=vault.service
此示例收集消息以 iptables
开头的内核日志。请注意,include_matches
比 Beat 处理器更有效,因为它们在数据传递到 Filebeat 之前应用,因此尽可能优先使用它们。
filebeat.inputs: - type: journald id: iptables include_matches.match: - _TRANSPORT=kernel processors: - drop_event: when.not.regexp.message: '^iptables'
每个示例都添加了输入的 id
,以确保游标使用唯一 ID 持久保存到注册表中。ID 在 journald 输入中应该是唯一的。如果您没有指定 id
,则会通过对配置进行哈希来为您创建一个 ID。因此,当您修改配置时,这将导致新的 ID 和新的游标。
配置选项编辑
journald
输入支持以下配置选项以及稍后描述的 通用选项。
id
编辑
输入的可选唯一标识符。通过提供唯一的 id
,您可以在同一个日志上操作多个输入。这允许每个输入的游标在注册表文件中独立持久保存。
filebeat.inputs: - type: journald id: consul.service include_matches: - _SYSTEMD_UNIT=consul.service - type: journald id: vault.service include_matches: - _SYSTEMD_UNIT=vault.service
paths
编辑
将被抓取和获取的路径列表。每个路径可以是目录路径(从目录中的所有日志中收集事件)或文件路径。如果指定目录,Filebeat 会将该目录下的所有日志合并到一个日志中并读取它们。
如果未指定路径,Filebeat 将从默认日志中读取。
backoff
编辑
尝试从日志中再次读取之前的等待秒数。默认值为 1 秒。
max_backoff
编辑
尝试从日志中再次读取之前的最长等待秒数。默认值为 60 秒。
seek
编辑
开始读取日志的位置。有效设置有
-
head
:从日志的开头开始读取。重新启动后,Filebeat 会重新发送日志中的所有日志消息。 -
tail
:从日志的末尾开始读取。这意味着在写入新消息之前不会发送任何事件。 -
cursor
:首次读取时,从日志的开头开始读取。重新加载或重新启动后,继续从最后一个已知位置读取。 -
since
:使用since
选项确定从哪里开始读取。
如果您有旧日志文件并且想要跳过一些行,请在指定 seek: tail
的情况下启动 Filebeat。然后停止 Filebeat,设置 seek: cursor
,并重新启动 Filebeat。
cursor_seek_fallback
编辑
如果没有可用的游标信息,则从该位置开始读取日志。有效选项有 head
、tail
和 since
。
since
编辑
从当前时间开始读取的时间偏移量。要使用 since
,seek
选项必须设置为 since
,或者 seek
模式必须设置为 cursor
并且 cursor_seek_fallback
设置为 since
。
此示例演示了如何在持久化游标存在时从该游标恢复,或者从过去 24 小时开始读取日志。
seek: cursor cursor_seek_fallback: since since: -24h
units
编辑
仅迭代此选项中指定的单元的条目。迭代的条目包括来自单元的消息、授权守护程序关于单元的消息和核心转储。但是,它不匹配 systemd 用户单元。
syslog_identifiers
编辑
仅读取具有所选 syslog 标识符的条目。
transports
编辑
使用指定的传输方式收集消息。例如:syslog。
有效传输方式
- audit:来自内核审计子系统的消息
- driver:内部生成的消息
- syslog:通过本地 syslog 套接字使用 syslog 协议接收的消息
- journal:通过本地 journal 协议接收的消息
- stdout:来自服务的标准输出或错误输出的消息
- kernel:来自内核的消息
include_matches
编辑
用于匹配字段的过滤器表达式集合。表达式的格式为 field=value
。Filebeat 获取与表达式完全匹配的所有事件。不支持模式匹配。
如果配置了过滤器表达式,则 Filebeat 的 journald 读取器将仅迭代设置了此字段的条目。如果过滤器表达式应用于不同的字段,则仅迭代设置了所有字段的条目。如果它们应用于相同的字段,则仅迭代字段采用指定值之一的条目。
match
:用于匹配字段的过滤器表达式列表。or
:or
下列出的过滤器表达式通过析取(或)连接。and
:and
下列出的过滤器表达式通过合取(与)连接。
请注意,这些表达式是有限的。您可以构建复杂的过滤,但不支持完整的逻辑表达式。
以下 include matches 配置读取所有 systemd
syslog 条目
include_matches.and: - match: - "journald.process.name=systemd" - "systemd.transport=syslog"
要引用字段,请使用以下之一
- systemd 日志使用的字段名称。例如,
CONTAINER_TAG=redis
。 - Filebeat 使用的 翻译后的字段名称。例如,
container.image.tag=redis
。Filebeat 不会翻译日志中的所有字段。对于自定义字段,请使用 systemd 日志中指定的名称。
翻译后的字段名称编辑
您可以在过滤器表达式中使用以下翻译后的名称来引用 journald 字段
Journald 字段名称 |
翻译后的名称 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
以下 Docker 的翻译后的字段也可用
|
|
|
|
|
|
|
|
|
|
通用选项编辑
所有输入都支持以下配置选项。
enabled
编辑
使用 enabled
选项启用和禁用输入。默认情况下,enabled 设置为 true。
tags
编辑
Filebeat 在每个已发布事件的 tags
字段中包含的标签列表。标签可以轻松地在 Kibana 中选择特定事件,或在 Logstash 中应用条件过滤。这些标签将附加到常规配置中指定的标签列表中。
示例
filebeat.inputs: - type: journald . . . tags: ["json"]
fields
编辑
您可以指定可选字段,以向输出添加其他信息。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值、数组、字典或这些的任何嵌套组合。默认情况下,您在此处指定的字段将分组在输出文档的 fields
子字典下。要将自定义字段存储为顶级字段,请将 fields_under_root
选项设置为 true。如果在常规配置中声明了重复字段,则其值将被此处声明的值覆盖。
filebeat.inputs: - type: journald . . . fields: app_id: query_engine_12
fields_under_root
编辑
如果此选项设置为 true,则自定义 字段 将作为顶级字段存储在输出文档中,而不是分组在 fields
子字典下。如果自定义字段名称与 Filebeat 添加的其他字段名称冲突,则自定义字段将覆盖其他字段。
processors
编辑
要应用于输入数据的处理器列表。
有关在配置中指定处理器的信息,请参阅 处理器。
pipeline
编辑
要为此输入生成的事件设置的摄取管道 ID。
管道 ID 也可以在 Elasticsearch 输出中配置,但此选项通常会导致配置文件更简单。如果在输入和输出中都配置了管道,则使用输入中的选项。
keep_null
编辑
如果此选项设置为 true,则值为 null
的字段将在输出文档中发布。默认情况下,keep_null
设置为 false
。
index
编辑
如果存在,则此格式字符串将覆盖此输入事件的索引(对于 elasticsearch 输出),或设置事件元数据的 raw_index
字段(对于其他输出)。此字符串只能引用代理名称和版本以及事件时间戳;要访问动态字段,请使用 output.elasticsearch.index
或处理器。
示例值:"%{[agent.name]}-myindex-%{+yyyy.MM.dd}"
可能会扩展为 "filebeat-myindex-2019.11.01"
。
publisher_pipeline.disable_host
编辑
默认情况下,所有事件都包含 host.name
。可以将此选项设置为 true
以禁用将此字段添加到所有事件。默认值为 false
。