Tag
- source:确定输入源
- match: 确定输出目的地
- filter:确定 event 处理流
- system:设置系统范围的配置
- label:将内部路由的输出和过滤器分组
- @include:包括其它文件
Syntax
Event structure
- tag: 事件来自何处
- time: 事件发生事件(原子时间)
- record: log内容(json)
Processing Events
- Filters
- Labels
- Buffers
Source
Fluentd支持多输入。每一个输入配置必须包含类型/type,比如tcp数据输入,或者http类型输入。type将指定使用的input plugin。
以下的示例中就定义了两个输入源,一个是从24224端口进入的tcp数据流,另一个是从9880端口进入的http数据。
1 | # Receive events from 24224/tcp |
举例说明
- tail
1 | <source> |
- 配置tail,表示从日志文件的尾部开始读取;如果是新文件,则从头开始读。
- 重启后,从pos文件读取上次读取位置。
path:路径读取。可以指定多个路径“、“分离。(可以同时收集多个log日志,而不用在重新起一个source)
tag:The tag of the event
format:日志的格式
支持:regexp 和 正则表达式
Example:Apache
1 | # 读取日志文件apache的为以下字段:主机、用户、时间、方法、路径、代码、大小、推荐人和代理 |
Example:syslog
1 | # 读取syslog的输出文件(例如,/var/log/syslog)对下列字段:时间、主机,识别,和消息 |
time_key:用来确定记录的时间戳。时间戳是当Fluentd读取记录是默认情况下使用的。
pos_file(必不可少):Fluentd将记录它上次读到这个文件的位置。
Example
1 | pos_file /var/log/td-agent/tmp/access.log.pos |
- time_format:时间格式
Match
Match配置了数据流的匹配规则和匹配成功后所需执行的动作,和路由表项类似。
比如以下的配置中就对匹配myapp.access标签成功的数据包执行file类型动作,将数据写入到路径为/var/log/fluent/access的文件中。
1 | # Match events tagged with "myapp.access" and |
Filter
System
Label
@include
Plugin
Fluentd有5种类型的插件,分别是:
- Input:完成输入数据的读取,由source部分配置
- Parser:解析插件
- Output:完成输出数据的操作,由match部分配置
- Formatter:消息格式化的插件,属于filter类型
- Buffer:缓存插件,用于缓存数据
Route
Route指的是数据在Fluentd中的处理流水线,一般的流程为
- input -> filter -> output
- input -> filter -> output with label
即由输入插件获取数据,然后交给filter做处理,然后交给output插件去转发。同时,也支持数据包/事件的重新提交,比如修改tag之后重新路由等等。
- reroute event by tags
- reroute event by record content
- reroute event to other label
https://docs.fluentd.org/v0.12/articles/routing-examples
Fluentd to Fluentd
Server
1 | # Takes the messages sent over TCP |
Client
1 | containers.input.conf: |- |
Refer to
https://blog.csdn.net/hxpjava1/article/details/79447630
http://www.muzixing.com/pages/2017/02/05/fluentdru-men-jiao-cheng.html