Surprised => indulgence => Calm => Lost => Panic =>Calm

Fluentd 配置文件-client fluentd 到 server fluentd

Fluentd admin 1239℃ 0评论

使用fluentd收集docker容器日志,使用docker的log-driver,并且使用fluentd的高可用配置方式(Fluentd High Availability Configuration)

即,在一台宿主机上运行docker容器,同时该宿主机上也运行着一个fluentd进程(log forwarders,这个进程暂且成为fluentd的客户端程序client)。

使用这个宿主机上的fluentd程序收集docker日志,并通过网络向另一个机器(也运行着fluentd程序,暂且称为fluentd服务器程序,log aggregators)发送日志,fluentd收集之后存在在某个地方,或者输出到标准输出。

fluentd_%e9%ab%98%e5%8f%af%e7%94%a8

Client机器

注意:这里最好需要再fluentd的选项中指定--log-opt fluentd-async-connect=true,如果没有指定,当你的fluentd进程挂了之后,容器就会立即终止,这样服务就挂了。

官网原文:”If container cannot connect to the Fluentd daemon on the specified address and fluentd-async-connect is not enabled, the container stops immediately.”

注意:运行fluentd时,如果遇到:

2016-09-18 11:35:00 -0400 [error]: unexpected error error_class=Errno::EADDRINUSE error=#< errno::eaddrinuse: Address already in use - bind(2) for "0.0.0.0" port 24224>

类似的错误,需要先关掉td-agent,在终端执行/etc/init.d/td-agent stop

提示:log tag支持如下,官网说明

{{.ID}},{{.FullID}},{{.Name}},{{.ImageID}},{{.ImageFullID}},{{.ImageName}},{{.DaemonName}}

fluentd服务器(接收多个fluentd发送的消息)

可以得到在stdout和/home/lee/fluentd-log目录下有相应的日志生成

目前遇到的问题2016年9月14日16:18:44

1. 在fluentd服务器输出路径是指定的,如上个例子中path /home/lee/fluentd-log,需要中tag中获取名字

解决办法:Fluentd 服务器log aggregators根据tag输出到指定路径

2. 在fluentd中获取得到的json格式的日志文件,取出log字段

解决办法:Fluentd提取发送日志中的value

3. 区分出fluentd从docker中获取日志来源,有两种来源:stdout,stderr

解决办法:Fluentd将Docker log中stdout和stderr分开

转载请注明:Imekaku-Blog » Fluentd 配置文件-client fluentd 到 server fluentd

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情