Fluent的server和client(第三章)-yellowcong

在实际种,通常是多个fluent协同工作的,就如下图所示,每个k8s的宿主机都装有fluent,输出的日志信息都跑到一个fulent种,然后输出到文件或者kafka里面,给大数据进行消费处理。

Fluent的server和client(第三章)-yellowcong

官网地址

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 

Fluent的server和client(第三章)-yellowcong

架构

主机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 

Fluent的server和client(第三章)-yellowcong

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>

Fluent的server和client(第三章)-yellowcong

启动客户端服务

 ./fluentd -c /etc/td-agent/docker_in04.conf

Fluent的server和client(第三章)-yellowcong

启动容器服务

这个地方,通过–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这个的输出
Fluent的server和client(第三章)-yellowcong

然后temp的还有日志信息,我们只指定了输出的前部分,后面就自动命名了一个配置文件。
Fluent的server和client(第三章)-yellowcong

常见问题

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 插件
Fluent的server和client(第三章)-yellowcong

参考文章

https://blog.csdn.net/jaysuper/article/details/8021878
http://www.imekaku.com/2016/09/14/fluentd-configure-client-server/

上一篇:软件工程173班仲新


下一篇:【LeetCode】C++ :中等题 - 树 173. 二叉搜索树迭代器