轻量级日志收集转发 | fluent-bit外部插件详解(三)

"本文主要对fluent-bit 1.3版本外部插件做详细介绍,关注后回复【pdf】获得文档"

1、回顾

随着集群规模不断扩大,日志收集问题将一直萦绕在我们耳边,前段时间我用六篇文章安利了使用fluentd及fluent-bit好处,具体可以参考如下链接:

下面我就直接介绍fluent-bit整体收集架构和插件,如果对整体有不理解的部分,可以参考如上链接。

2、外部输入插件

fluent-bit可以收集事件、日志、度量指标等数据,它可以通过一个网络接口,无线电硬件或一些内置的度量。以下是各个版本支持数据收集表格:

1.0版本

1.1版本

1.2版本

1.3版本

名称

标题

描述

X

X

collected

Collected

侦听来自Collected的UDP数据包。

CPU

CPU使用率

测量CPU的总使用率

disk

磁盘使用率

测量磁盘IO

dummy

Dummy

生成虚拟事件

exec

Exec

执行外部程序并收集事件日志。

forward

Forward

fluentd转发协议

head

Head

读取文件的前几行

health

health

检查TCP服务的健康状况。

kmsg

Kernel Log Buffer

读取Linux内核日志缓冲区消息。

MEM

内存使用情况

测量系统上使用的内存总量。

MQTT

MQTT

启动MQTT服务器并接收发布消息。

netif

网络流量

测量网络流量。

proc

处理

检查进程的运行状况。

random

随机

生成随机样本

serial

串行事件

从串行接口读取数据信息。

stdin

标准输入

从标准输入读取数据。

syslog

syslog

从Unix套接字读取syslog消息。

systemd

Systemd

从Systemd / Journaled读取日志。

tail

tail

从文件末尾读取数据

TCP

TCP

通过tcp监听json数据

X

X

thermal

Thermal

测量系统温度。

3、外部输出插件

以下是fluent-bit可用的输出插件,具体见表格:

1.0版本

1.1版本

1.2版本

1.3版本

name

title

describtion

azure

Azure日志分析

将记录吸收到Azure Log Analytics中

bigquery

bigquery

将记录提取到Google BigQuery中

counter

counter

简单记录计数器。

X

datadog

datadog

提取日志到Datadog。

es

es

将记录刷新到Elasticsearch服务器。

file

文件

将记录刷新到文件。

flowcounter

FlowCounter

计数记录。

forward

forward

转发协议

http

HTTP

将记录刷新到HTTP端点。

influxdb

InfluxDB

将记录刷新到InfluxDB时间序列数据库。

kafaka

kafaka

将记录刷新到Apache Kafka

kafaka-rest

Kafka REST代理

将记录刷新到Kafka REST代理服务器。

stackdriver

Google Stackdriver记录

将记录刷新到Google Stackdriver Logging服务。

stdout

标准输出

将记录刷新到标准输出。

splunk

Splunk

将记录刷新到Splunk Enterprise服务

tcp

TCP和TLS

将记录刷新到TCP服务器。

td

td

将记录刷新到云服务以进行分析。

nats

nats

将记录刷新到NATS服务器。

null

空值

不进行事件处理

4、使用示例

4.1、 tail插件(输入)

输入插件tail允许监视一个或多个文本文件。它具有类似于tail -f shell命令的行为。该插件读取路径模式中的每个匹配文件,并为找到的每个新行(用\ n分隔)生成一条新记录。(可选)可以使用数据库文件,以便插件可以具有跟踪文件的历史记录和偏移状态,这对于重新启动服务时恢复状态非常有用。

配置参数:

该插件支持以下参数配置,如下表所示:

Key

Description

Default

Buffer_Chunk_Size

设置初始缓冲区大小以读取文件数据。该值也用于增加缓冲区大小。该值必须符合“ 单位大小”规范。

32k

Buffer_Max_Size

设置每个受监视文件的缓冲区大小的限制。当需要增加缓冲区时(例如:很长的行),该值用于限制内存缓冲区可以增长多少。如果读取的文件超过此限制,将从监视的文件列表中删除该文件。该值必须符合“ 单位大小”规范。

Buffer_Chunk_Size

Path

通过使用通用通配符指定一个或多个特定日志文件的模式。


Path_Key

如果启用,它将附加受监视文件的名称作为记录的一部分。分配的值成为映射中的键。


Exclude_Path

设置一个或多个用逗号分隔的外壳模式,以排除符合特定条件的文件,例如:exclude_path = *.gz,*.zip


Refresh_Interval

刷新监视文件列表的时间间隔(以秒为单位)。

60s

Rotate_Wait

指定在刷新某些挂起的数据时,以秒为单位监视文件一次轮转所需的额外时间。

5s

Ignore_Older

忽略比该时间旧的记录(以秒为单位)。支持m,h,d(分钟,小时,天)语法。默认行为是从指定文件中读取所有记录。仅在指定了解析器并且可以解析记录时间时才可用。


Skip_Long_Lines

当受监视的文件由于行很长(Buffer_Max_Size)而达到缓冲区容量时,默认行为是停止监视该文件。Skip_Long_Lines会更改该行为,并指示Fluent Bit跳过长行并继续处理适合缓冲区大小的其他行。

DB

指定数据库文件以跟踪受监视的文件和偏移量。


DB.Sync

设置默认的同步(I / O)方法。值:Extra,Full,Normal,Off。此标志影响内部SQLite引擎与磁盘同步的方式

full

Mem_Buf_Limit

设置将数据附加到引擎时,Tail插件可以使用的内存限制。如果达到极限,它将被暂停;刷新数据后,它将恢复。


Parser

指定解析器的名称,以将其解析为结构化消息。


Key

当消息是非结构化消息(未应用解析器)时,它将作为字符串附加在键名log下。此选项允许为该键定义替代名称。

log

Tag

设置一个标签(带有正则表达式提取字段),该标签将放置在读取的行上。例如kube.<namespace_name>.<pod_name>.<container_name>


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,则默认情况下,插件将从头开始读取每个目标文件。

Docker日志收集模式配置参数:

由于行长度限制,通过docker模式收集docker守护进程产生json日志,如果需要使用此模式。需要解析器配置tail插件,然后启用docker模式。

Key

Description

Default

Docker

如果启用,该插件将重新组合已拆分的Docker日志行,然后将其传递至如上配置的任何解析器。此模式不能与多行同时使用。

Docker_Mode_Flush

等待时间(以秒为单位),以刷新未完成的数据行。

4

入门

为了尾随文本或日志文件,您可以从命令行或通过配置文件运行插件。

命令行:

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

配置:

[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

4.2、file文件介绍(输出)

配置参数:

该插件支持以下配置参数:

Key

Description

Path

输出文件路径。如果未设置,则文件名将为标签名。

format

文件内容的格式。另请参阅格式部分。默认值:out_file。

格式:

输出时间,标签和json记录,如下所示:

tag: [time, {"key1":"value1", "key2":"value2", "key3":"value3"}]

将记录输出为JSON(没有其他和属性),如下所示:

{"key1":"value1", "key2":"value2", "key3":"value3"}

将记录输出为CSV,CSV支持其他配置参数,如下所示:

Key

Description

Delimiter

用于分隔每个数据的字符。默认值:“,”

time[delimiter]"value1"[delimiter]"value2"[delimiter]"value3"

模板格式

使用自定义格式模板输出记录配置参数如下:

Key

Description

Template

格式字符串。默认值:“ {time} {message}”

例如,如果您按如下模板所示设置配置:

[INPUT]
  Name mem


[OUTPUT]
  Name file
  Format template
  Template {time} used={Mem.used} free={Mem.free} total={Mem.total}

输出:

1564462620.000254 used=1045448 free=31760160 total=32805608

入门介绍:

您可以从命令行或通过配置文件运行插件;

命令行模式收集cpu运行指标信息:

fluent-bit -i cpu -o file -p path=output.txt

配置文件运行:

[INPUT]
    Name cpu
    Tag  cpu


[OUTPUT]
    Name file
    Match *
    Path output.txt

5、总结

本文主要介绍了各个版本插件支持进行列举以及对部分插件的使用做了简单介绍,如果对上述运行有疑问的地方,可以参考前几节的介绍;下文我会继续分享fluent-bit结合docker和Kubernetes使用介绍,敬请期待。关注、公众号后台回复【pdf】可获得详细文档。

推荐阅读:


Kubernetes排障指南

从零搭建Kubernetes下的nignx和tomcat

Kubernetes中如何使用ClusterDNS进行服务发现?

Kubernetes入门培训(内含PPT)

从Ice到Kubernetes容器技术,微服务架构经历了什么?


原创不易,随手关注或者”在看“,诚挚感谢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章