Fluent Bit 中文文档
  • Fluent Bit 中文文档
  • 关于
    • Fluent Bit 是什么?
    • Fluent Bit 简要历史
    • Fluentd & Fluent Bit
    • 协议
  • 概念
    • 核心概念
    • 缓冲
    • 数据管道
      • 输入
      • 解析器
      • 过滤器
      • 缓冲
      • 路由
      • 输出
  • 安装
    • 升级说明
    • 平台支持
    • 依赖
    • 源码安装
      • 下载源码
      • 构建和安装
      • 以静态配置构建
    • Linux 软件包
      • Amazon Linux
      • Redhat / CentOS
      • Debian
      • Ubuntu
      • 树莓派
    • Docker
    • Kubernetes
    • Windows
  • 管理
    • 配置 Fluent Bit
      • 格式与模式
      • 配置文件
      • 变量
      • 命令
      • 上游服务负载均衡
      • 单位
    • 安全性
    • 缓冲与存储
    • 积压
    • 调度与重试
    • 内存管理
    • 监控
    • 内部状态导出/信号
  • 数据管道
    • 输入插件
      • Dummy
      • Memory Metics
      • Standard Input
      • Systemd
      • tail
    • 解析器
      • JSON
      • Regular Expression
      • LTSV
      • Logfmt
    • 过滤器
      • Grep
      • Kubernetes
      • Rewrite Tag
      • Modify
      • Nest
    • 输出插件
      • Counter
      • Elasticsearch
      • File
      • FlowCounter
      • HTTP
      • Kafka
      • NULL
      • PostgreSQL
      • Standard Output
      • TCP & TLS
  • 流处理
    • 简介
    • 总览
    • 快速开始
      • Fluent Bit + SQL
      • Check Keys and NULL values
      • Hands On! 101
  • FLUENT BIT FOR DEVELOPERS
    • C Library API
    • 手动提取记录
    • Golang 输出插件
Powered by GitBook
On this page
  • 配置参数
  • 多行配置参数
  • Docker 模式配置参数
  • 快速开始
  • 命令行
  • 配置文件
  • 文件状态跟踪
  • 文件滚动

Was this helpful?

  1. 数据管道
  2. 输入插件

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

配置文件

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

[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(复制清空) 模式。

PreviousSystemdNext解析器

Last updated 4 years ago

Was this helpful?

设置读取文件数据的初始缓冲区大小。该值也用于增加缓冲区大小。该值必须符合章节中的规范

设置每个监控文件的缓冲区大小。当需要增加缓冲区时,此值用于限制内存缓冲区可以增加多少。如果超过此限制,则将从监控文件列表中删除该文件。该值必须符合章节中的规范

设置默认的同步方法。可选值: Extra, Full, Normal, Off.此标志影响内部 SQLite 引擎与磁盘同步的方式,有关选项的更多详细信息,请参阅 .

为读取的行设置标签(带有正则表达式字段)。如 kube.<namespace_name>.<pod_name>.<container_name>.请注意支持如下"标签扩展"规则: 如果标签包含星号(*),则星号(*)将被替换为文件的绝对路径(请参阅

单位
单位
sqlite 文档
Workflow of Tail + Kubernetes Filter