许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  轻量级日志收集转发工具:fluent-bit外部插件详解(第三部分)

轻量级日志收集转发工具:fluent-bit外部插件详解(第三部分)

阅读数 4
点赞 0
article_banner

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

1、回顾

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

  • Kubernetes日志收集解决方案
  • Kubernetes集群环境下fluentd日志收集方案介绍
  • 日志收集工具fluentd安装配置及使用介绍
  • 一文了解日志收集工具fluent-bit
  • 轻量级日志收集转发 | fluent-bit指令详解(一)
  • 轻量级日志收集转发 | fluent-bit配置详解(二)

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

2、外部输入插件

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


1.0版本1.1版本1.2版本1.3版本名称标题描述
XXcollectedCollected侦听来自Collected的UDP数据包。
CPUCPU使用率测量CPU的总使用率
disk磁盘使用率测量磁盘IO
dummyDummy生成虚拟事件
execExec执行外部程序并收集事件日志。
forwardForwardfluentd转发协议
headHead读取文件的前几行
healthhealth检查TCP服务的健康状况。
kmsgKernel Log Buffer读取Linux内核日志缓冲区消息。
MEM内存使用情况测量系统上使用的内存总量。
MQTTMQTT启动MQTT服务器并接收发布消息。
netif网络流量测量网络流量。
proc处理检查进程的运行状况。
random随机生成随机样本
serial串行事件从串行接口读取数据信息。
stdin标准输入从标准输入读取数据。
syslogsyslog从Unix套接字读取syslog消息。
systemdSystemd从Systemd / Journaled读取日志。
tailtail从文件末尾读取数据
TCPTCP通过tcp监听json数据
XXthermalThermal测量系统温度。

3、外部输出插件

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


1.0版本1.1版本1.2版本1.3版本nametitledescribtion
azureAzure日志分析将记录吸收到Azure Log Analytics中
bigquerybigquery将记录提取到Google BigQuery中
countercounter简单记录计数器。
Xdatadogdatadog提取日志到Datadog。
eses将记录刷新到Elasticsearch服务器。
file文件将记录刷新到文件。
flowcounterFlowCounter计数记录。
forwardforward转发协议
httpHTTP将记录刷新到HTTP端点。
influxdbInfluxDB将记录刷新到InfluxDB时间序列数据库。
kafakakafaka将记录刷新到Apache Kafka
kafaka-restKafka REST代理将记录刷新到Kafka REST代理服务器。
stackdriverGoogle Stackdriver记录将记录刷新到Google Stackdriver Logging服务。
stdout标准输出将记录刷新到标准输出。
splunkSplunk将记录刷新到Splunk Enterprise服务
tcpTCP和TLS将记录刷新到TCP服务器。
tdtd将记录刷新到云服务以进行分析。
natsnats将记录刷新到NATS服务器。
null空值不进行事件处理

4、使用示例

4.1、 tail插件(输入)

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

配置参数:

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


KeyDescriptionDefault
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模式。


KeyDescriptionDefault
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文件介绍(输出)

配置参数:

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


KeyDescription
Path输出文件路径。如果未设置,则文件名将为标签名。
format文件内容的格式。另请参阅格式部分。默认值:out_file。

格式:

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

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

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

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

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


KeyDescription
Delimiter用于分隔每个数据的字符。默认值:“,”
time[delimiter]"value1"[delimiter]"value2"[delimiter]"value3"

模板格式

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


KeyDescription
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】可获得详细文档。


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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空