Fluentd日志输出测试-配置文件

这里使用Docker run命令使用某个特定的镜像(使用命令,获取镜像:docker pull imekaku/simple-web)进行日志输出测试,该镜像中/work/simple.py文件为使用Tornado编写的建议web应用。

在运行Docker容器的机器上,运行着fluentd客户端程序(log forwarders端),用于收集Docker日志并转发给fluentd服务器端(log aggregators端)。

fluentd服务器端

<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<match err.docker.*>
  type forest
  subtype file
  <template>
    output_tag false
    output_time false
    message_key log
    format single_value
    path /home/lee/fluentd-log/err/${tag_parts[2]}/temp
  </template>
</match>

<match out.docker.*>
  type forest
  subtype file
  <template>
    output_tag false
    output_time false
    message_key log
    format single_value
    path /home/lee/fluentd-log/out/${tag_parts[2]}/temp
  </template>
</match>

运行命令,开启fluentd:/opt/td-agent/embedded/bin/fluentd -c docker_in06.conf

fluentd客户端

<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<match docker.*>
  type rewrite_tag_filter 
  rewriterule1 source stdout out.${tag}
  rewriterule2 source stderr err.${tag}
</match>

# 使用输出
<match out.docker.*>
    type forward
    <server>
    host 192.168.126.136
    port 24224
    </server>
    flush_interval 5s
</match>

<match err.docker.*>
    type forward    
    <server>
    host 192.168.126.136
    port 24224
    </server>
    flush_interval 5s
</match>

运行命令,开启fluentd:fluentd -c docker_in06.conf

运行命令,运行Docker容器:
[ini]
root@localhost:~# docker run –name temp01 –log-driver=fluentd –log-opt tag=”docker.{{.Name}}” \
> –log-opt fluentd-async-connect=true -it -p 8003:8000 imekaku/simple-web bash
root@2d6c9228638f:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var work
root@2d6c9228638f:/# vi work/echo.py
root@2d6c9228638f:/# cat work/echo.py
i = 0
while True:
print “This is the %d” % i
i = i + 1
root@2d6c9228638f:/# python work/simple.py &
[1] 17
root@2d6c9228638f:/# python work/echo.py
[/ini]
使用echo.py脚本不断的往标准输出输出字符串

日志输出测试

1. 在没有启动客户端fluentd的情况下,就开启服务器fluentd和docker容器

结果:仍然能够保证docker容器正常运行,并且日志输出正常

2. 在长时间断掉客户端fluentd的情况下,运行服务器fluentd和docker容器

结果:仍然能够保证docker容器正常运行,日志输出正常,中断期间日志超过最大缓冲区大小,被丢弃

3. 运行客户端fluentd和docker容器,中断服务器fluentd

结果:客户端fluentd会多次尝试连接服务器fluentd,期间能够保证docker容器运行正常,连接成功后,日志输出正常

正常情况下,日志输出结果

fluentd会根据最大缓冲区大小,将日志文件切分,并编号

lee@lee-PC:temp01$ ls -lh
total 203M
-rw-r--r-- 1 root root 7.4M Sep 19 14:28 temp.20160919_0.log
-rw-r--r-- 1 root root 7.5M Sep 19 14:31 temp.20160919_10.log
-rw-r--r-- 1 root root 7.8M Sep 19 14:31 temp.20160919_11.log
-rw-r--r-- 1 root root 7.7M Sep 19 14:31 temp.20160919_12.log
-rw-r--r-- 1 root root 7.0M Sep 19 14:31 temp.20160919_13.log
-rw-r--r-- 1 root root 8.0M Sep 19 14:32 temp.20160919_14.log
-rw-r--r-- 1 root root 7.9M Sep 19 14:32 temp.20160919_15.log
-rw-r--r-- 1 root root 7.3M Sep 19 14:32 temp.20160919_16.log
-rw-r--r-- 1 root root 8.0M Sep 19 14:33 temp.20160919_17.log
-rw-r--r-- 1 root root 7.8M Sep 19 14:33 temp.20160919_18.log
-rw-r--r-- 1 root root 7.9M Sep 19 14:33 temp.20160919_19.log
-rw-r--r-- 1 root root 7.4M Sep 19 14:28 temp.20160919_1.log
-rw-r--r-- 1 root root 7.1M Sep 19 14:33 temp.20160919_20.log
-rw-r--r-- 1 root root 8.0M Sep 19 14:34 temp.20160919_21.log
-rw-r--r-- 1 root root 8.0M Sep 19 14:34 temp.20160919_22.log
-rw-r--r-- 1 root root 7.7M Sep 19 14:34 temp.20160919_23.log
-rw-r--r-- 1 root root 7.0M Sep 19 14:34 temp.20160919_24.log
-rw-r--r-- 1 root root 7.9M Sep 19 14:35 temp.20160919_25.log
-rw-r--r-- 1 root root 7.9M Sep 19 14:28 temp.20160919_2.log
-rw-r--r-- 1 root root 7.4M Sep 19 14:29 temp.20160919_3.log
-rw-r--r-- 1 root root 7.5M Sep 19 14:29 temp.20160919_4.log
-rw-r--r-- 1 root root 6.9M Sep 19 14:29 temp.20160919_5.log
-rw-r--r-- 1 root root 7.6M Sep 19 14:30 temp.20160919_6.log
-rw-r--r-- 1 root root 7.9M Sep 19 14:30 temp.20160919_7.log
-rw-r--r-- 1 root root 7.4M Sep 19 14:30 temp.20160919_8.log
-rw-r--r-- 1 root root 7.5M Sep 19 14:30 temp.20160919_9.log
-rw-r--r-- 1 root root 6.0M Sep 19 14:35 temp.20160919.b53cd683cbbe31a7e

fluentd客户端配置备份fluentd服务器

官网文档,When the active aggregator (192.168.0.1) dies, the logs will instead be sent to the backup aggregator (192.168.0.2). If both servers die, the logs are buffered on-disk at the corresponding forwarder nodes.

如果192.168.0.1机器不能使用了,日志将会被发送给192.168.0.2机器

# TCP input
<source>
  @type forward
  port 24224
</source>

# HTTP input
<source>
  @type http
  port 8888
</source>

# Log Forwarding
<match mytag.**>
  @type forward

  # primary host
  <server>
    host 192.168.0.1
    port 24224
  </server>
  # use secondary host
  <server>
    host 192.168.0.2
    port 24224
    standby
  </server>

  # use longer flush_interval to reduce CPU usage.
  # note that this is a trade-off against latency.
  flush_interval 60s
</match>

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部