tail
tail 输入插件允许监测一个或多个文本文件。它具有类似于 tail -f
的 shell 命令行功能。
该插件读取 Path 模式中的每个匹配文件,并为每个新行(分隔符为\n
)生成一条新纪录。作为可选的,可以使用数据库文件,以便插件可以跟踪文件的历史记录和偏移状态,这对于重启服务时的状态恢复非常有用。
配置参数
该插件支持以下配置参数:
键
描述
默认值
Buffer_Chunk_Size
32k
Buffer_Max_Size
Buffer_Chunk_Size
Path
通过使用通配符指定一个或多个日志文件的
Path_Key
如果启用,它将附加监控文件的名称作为记录的一部分。指定的值成为映射中的键
Exclude_Path
设置一个或多个用逗号分隔的模式,以排除符合特定条件的文件。例如 exclude_path=*.gz,*.zip
Refresh_Interval
刷新监控文件列表的时间间隔(秒)
60
Rotate_Wait
指定监控文件的额外时间,以防止日志文件滚动丢失某些数据
5
Ignore_Older
忽略比该时间旧的记录(秒)。支持 m,h,d(分钟,小时,天)。默认行为是从指定文件中读取所有记录。 仅在指定了解析器并且可以解析记录时间时才可用
Skip_Long_Lines
当监控的文件由于行(Buffer_Max_Size)很长而达到缓冲区容量时,默认行为是停止监视该文件。Skip_Long_Lines 会更改该行为,并指示 Fluent Bit 跳过长行并继续处理适合缓冲区大小的其他行
Off
DB
指定跟踪监控文件的偏移量的数据库文件
DB.Sync
Full
Mem_Buf_Limit
设置将数据追加到引擎时的内存限制。如果达到此限制,它将被暂停;刷新数据后,它将恢复.
Parser
指定解析器的名称,将记录转化为结构化消息
Key
当消息是非结构化数据时(未应用解析器),消息将以字符串形式作为 log
键的值。此选项允许为该键指定名称
log
Tag
Tag_Regex
设置正则表达式以从文件中提取字段.如 (?<pod_name>[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?<namespace_name>[^_]+)_(?<container_name>.+)-
请注意,如果未指定数据库参数 db
,默认情况下,插件将从头开始读取每个目标文件。
多行配置参数
此外,还存在以下选项来配置多行文件的处理:
键
描述
默认值
Multiline
如果启用,该插件将尝试发现多行消息并使用适当的解析器组成输出消息。请注意,启用此选项后,将不使用 Parser 选项
Off
Multiline_Flush
处理队列中多行消息的等待时间
4
Parser_Firstline
多行消息的开头匹配的解析器的名称。请注意,解析器中定义的正则表达式必须包含组名(名为capture )
Parser_N
可选的额外解析器,用于解析并结构化多行条目。此选项可用于定义多个解析器,例如:Parser_1 ab1,Parser_2 ab2,Parser_N abN
Docker 模式配置参数
还包含 Docker 模式,用于重组由于其行长限制被 Docker 守护程序分割的 JSON 日志行。要使用此功能,请配置 tail 插件使用相应的解析器,然后启用 Docker 模式:
Key
Description
Default
Docker_Mode
如果启用,该插件将重新组合已分割的 Docker 日志行,然后将其传递至如上配置的任何解析器。此模式不能与多行模式同时使用
Off
Docker_Mode_Flush
刷新队列中未完成的分割行的等待时间
4
快速开始
为了实时读取文本或日志文件,您可以从命令行或通过配置文件运行插件:
命令行
在命令行中,您可以使用以下选项让 Fluent Bit 解析文本文件
配置文件
在您的主配置文件中,添加以下 Input 和 Output 配置段:
文件状态跟踪
强烈建议您启用 tail 输入插件可保存跟踪文件的状态的功能。为此,可以使用 db 属性,如:
运行时,数据库文件/path/to/logs.db
将被创建,该数据库由 SQLite3 支持,因此,如果您有兴趣探索内容,则可以使用 SQLite 客户端工具将其打开,例如:
确保 Fluent Bit 没有依赖该数据库再浏览数据库文件,否则您会看到一些 Error: database is locked 之类的错误信息。
格式化 SQLite
默认情况下,SQLite 客户端工具不会以人类易读的方式格式化列,因此要浏览 in_tail_files 表,您可以在 ~/.sqliterc
中创建具有以下内容的配置文件
文件滚动
文件滚动可以被正确的处理,包括日志滚动 copytruncate(复制清空) 模式。
Last updated