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 解析文本文件

$ fluent-bit -i tail -p path=/var/log/syslog -o stdout

配置文件

在您的主配置文件中,添加以下 InputOutput 配置段:

[INPUT]
    Name        tail
    Path        /var/log/syslog

[OUTPUT]
    Name   stdout
    Match  *

文件状态跟踪

强烈建议您启用 tail 输入插件可保存跟踪文件的状态的功能。为此,可以使用 db 属性,如:

$ fluent-bit -i tail -p path=/var/log/syslog -p db=/path/to/logs.db -o stdout

运行时,数据库文件/path/to/logs.db 将被创建,该数据库由 SQLite3 支持,因此,如果您有兴趣探索内容,则可以使用 SQLite 客户端工具将其打开,例如:

$ sqlite3 tail.db
-- Loading resources from /home/edsiper/.sqliterc

SQLite version 3.14.1 2016-08-11 18:53:32
Enter ".help" for usage hints.
sqlite> SELECT * FROM in_tail_files;
id     name                              offset        inode         created
-----  --------------------------------  ------------  ------------  ----------
1      /var/log/syslog                   73453145      23462108      1480371857
sqlite>

确保 Fluent Bit 没有依赖该数据库再浏览数据库文件,否则您会看到一些 Error: database is locked 之类的错误信息。

格式化 SQLite

默认情况下,SQLite 客户端工具不会以人类易读的方式格式化列,因此要浏览 in_tail_files 表,您可以在 ~/.sqliterc 中创建具有以下内容的配置文件

.headers on
.mode column
.width 5 32 12 12 10

文件滚动

文件滚动可以被正确的处理,包括日志滚动 copytruncate(复制清空) 模式。

Last updated