在实际种,通常是多个fluent协同工作的,就如下图所示,每个k8s的宿主机都装有fluent,输出的日志信息都跑到一个fulent种,然后输出到文件或者kafka里面,给大数据进行消费处理。
官网地址
https://docs.fluentd.org/
安装fluent-plugin-forest 插件
# 客户端需要安装的插件
#用于路径中加入tag
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-forest
#用于修改tag
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-rewrite-tag-filter
#用于正则匹配日志内容,进行筛选
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-grep
#用于修改record
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer
# 服务器端需要安装的插件
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-forest
#输出文件到kafka的插件
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-kafka
架构
主机ip | 主机名 |
---|---|
192.168.141.51 | master-01-k8s |
192.168.141.52 | master-02-k8s |
server 机器
1 配置文件
服务端,服务的端口为24224,match 匹配,根据不同的类型的tag,对文件进行不同的处理,type stdout
表示直接控制台输出,type file
表示存储为文件。
<source>
type forward
port 24224
bind 0.0.0.0
</source>
<match docker.test*>
type stdout
</match>
<match docker.temp*>
type file
path /home/lee/fluentd-log
</match>
2 启动service
/opt/td-agent/embedded/bin/fluentd -c docker_in03.conf
Client机器
启动客户端机器,
<source>
type forward
port 24224
bind 0.0.0.0
</source>
<match docker.test*>
type forward
<server>
host 192.168.141.51
port 24224
</server>
flush_interval 60s
</match>
<match docker.temp*>
type forward
<server>
host 192.168.141.51
port 24224
</server>
flush_interval 60s
</match>
启动客户端服务
./fluentd -c /etc/td-agent/docker_in04.conf
启动容器服务
这个地方,通过–log-opt tag=“docker.{{.Name}}” ,来指定容器的tag,然后来根据这个tag来进行匹配(match),默认会根据容器的CONTAINER ID 来进行匹配。
#启动test01
docker run --name test01 --log-driver=fluentd --log-opt tag="docker.{{.Name}}" --log-opt fluentd-async-connect=true -d -p 8001:8000 imekaku/simple-web python /work/simple.py
#启动temp01
docker run --name temp01 --log-driver=fluentd --log-opt tag="docker.{{.Name}}" --log-opt fluentd-async-connect=true -d -p 8002:8000 imekaku/simple-web python /work/simple.py
提示:log tag支持如下,官网说明:
{{.ID}},{{.FullID}},{{.Name}},{{.ImageID}},{{.ImageFullID}},{{.ImageName}},{{.DaemonName}}
访问测试
#多次curl访问,就会看到服务端有消息
curl 127.0.0.1:8081
curl 127.0.0.1:8082
这个是test01这个的输出
然后temp的还有日志信息,我们只指定了输出的前部分,后面就自动命名了一个配置文件。
常见问题
1 config error file=“in_docker_file.conf” error=“Unknown output plugin ‘forest’. Run ‘gem search -rd fluent-plugin’ to find plugins”
导致这个问题的原因是没有安装fluent-plugin-forest 插件
参考文章
https://blog.csdn.net/jaysuper/article/details/8021878
http://www.imekaku.com/2016/09/14/fluentd-configure-client-server/