如果你安装Fluentd运用的是rpm或是deb 的安装包,这个配置文件在/etc/td-agent/td-agent.conf 这个目录。重新安装将会安装conf 配置文件。
$ sudo vi /etc/td-agent/td-agent.conf
如果你安装Fluentd 用的是Ruby Gem,你可以创建一个配置文件运用下面的命令。发出一个终止信号将会重新安装配置文件。(如果你修改了配置文件—fluent.conf 文件,ctrl c c 终止进程,然后在配置文件下重新启动)
$ ctrl c
$fluentd -c fluent.conf
$ sudo fluentd --setup /etc/fluent
$ sudo vi /etc/fluent/fluent.conf
这个配置文件由以下指令组成:
1. source 指令决定输入资源。
2. match 指令决定输出目的地。
3. include 指令包含其他一些文件
Fluentd 的输入源是通过选择和配置所需要的输入插件使用source指令。Fluentd的标准输入插件包含http和forward(转发)模式。
# Receive events from 24224/tcp #从24224/tcp 中接收事件,tcp模式
# This is used by log forwarding and the fluent-cat command #使用日志转发和fluent-cat 命令
<source>
type forward
port 24224
</source>
# http://this.host:9880/myapp.access?json={"event":"data"}
<source>
type http
port 9880
</source>
每个source指令必须包含一个type(类型)参数。type参数指定输入插件使用。
Routing
选择路径
source 把事件提交到fluentd的路由引擎中。一个事件包含三个实体标签:tag,time和record。tag是一个通过 . 来分离的字符串 (e.g. myapp.access),用作Fluentd内部路由引擎的方向。time是当事件产生unix时间。record是一个JSON对象。
(主要的是tag,用来指导方向,所要匹配的地方)
在上面的例子中,HTTP输入插件提交以下事件:
# generated by http://this.host:9880/myapp.access?json={"event":"data"}
tag: myapp.access
time: (current time)
record: {"event":"data"}
Plugin
插件
用户可以扩展输入源Fluentd,通过编写自己的插件而超出默认选项。为了进一步关于fluentd 的信息,请参考 Input Plugin Overview 文章。(怎样修改fluentd的默认插件的内容,就是修改fluent.conf文件)
match指令(仔细看)
Fluentd 的输出的目的地是通过选择和配置所需的输出插件使用match的指令。Fluentd的标准输出插件包含file和forward。
Fluentd 的输入源是通过选择和配置所需要的输入插件使用source指令。Fluentd的标准输入插件包含http和forward(转发)模式。
Examples
# Match events tagged with "myapp.access" and match 事件是为了匹配 tag myapp.access和 这就是为什么
# store them to /var/log/fluent/access.%Y-%m-%d
<match myapp.access>
type file
path /var/log/fluent/access
</match>
<match myapp.log.**>
type file
format /var/log/fluent/myapp_hourly
time_slice_format %Y%m%d%H
</match>
每个match指令必须包括一个匹配模式和type参数。match模式是用来过滤事件。只有事件与tag匹配,这个模式将被发送到输出目的地。type参数指定输出插件使用。例如,用户可以发送所有匹配myapp.accesslog.* *的模式到指定的目录file。
用户可以通过编写自己的插件,覆盖默认选项,来扩大Fluentd的输出源。为进一步的信息关于Fluentd的输出目的地,请参考 Output Plugin Overview 文章。
Match Pattern
match 模式
The following match patterns can be used:
* matches a single tag element. 匹配单个tag元素 a.* = a.b 不等于 a.b.c
For example, the pattern a.* matches a.b, but does not match a or a.b.c
** matches zero or more tag elements. a.**=a和a.b 和a.b.c
For example, the pattern a.** matches a, a.b and a.b.c
{X,Y,Z} matches X, Y, or Z, where X, Y, and Z are match patterns.
For example, the pattern {a,b} matches a and b, but does not match c。{a,b} 匹配 a and b,但不匹配 c
This can be used in combination with the * or ** patterns. Examples include a.{b,c}.* and a.{b,c.**}
Include Directive
指令在单独的配置文件可以导入使用 include 指令::
# Include config files in the ./config.d directory
include config.d/*.conf
include 指令支持常规路径,glob模式和http约定::
# absolute path 绝对路径
include /path/to/config.conf
# if using a relative path, the directive will use
# the dirname of this config file to expand the path
如果使用性对路径,这个配置文件的目录名将使用扩张后的路径命令。
include extra.conf
# glob match pattern
include config.d/*.conf
# http
include http://example.com/fluent.conf