docker 通过 fluentd 输出日志测试

一、创建一个运行 fluentd 的 docker容器

docker pull fluent/fluentd:edge-debian

创建配置文件 /root/tmp/fluentd.conf


  @type http
  port 9880
  bind 0.0.0.0



  @type stdout

启动

[root@svr1 ~]# docker run -p 9880:9880 -v /root/tmp:/fluentd/etc fluent/fluentd:edge-debian -c /fluentd/etc/fluentd.conf
fluentd -c /fluentd/etc/fluentd.conf
2022-10-09 15:18:19 +0000 [info]: parsing config file is succeeded path="/fluentd/etc/fluentd.conf"
2022-10-09 15:18:19 +0000 [info]: gem 'fluentd' version '1.15.2'
2022-10-09 15:18:19 +0000 [warn]: define  to capture fluentd logs in top level is deprecated. Use 

查看容器

[root@svr1 ~]# docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                         NAMES
d79fa9288e00        fluent/fluentd:edge-debian   "tini -- /bin/entr..."   15 seconds ago      Up 13 seconds       5140/tcp, 24224/tcp, 0.0.0.0:9880->9880/tcp   stupefied_einstein

测试

curl -X POST -d 'json={"json":"message"}' http://127.0.0.1:9880/sample.test

容器打印如下日志

2022-10-09 15:21:49.094392263 +0000 sample.test: {"json":"message"}

二、创建docker容器,发送日志到fluentd

需要docker版本不低于1.8

1. 本地 fluentd 实例

创建配置文件/root/demo.conf


  @type forward
  port 24224
  bind 0.0.0.0



  @type stdout

启动一个 fluentd 实例

docker run -it -p 24224:24224 -v /root/demo.conf:/fluentd/etc/demo.conf -e FLUENTD_CONF=demo.conf fluent/fluentd:latest

启动一个docker实例,并加载 --log-driver=fluentd

[root@localhost ~]# docker run --log-driver=fluentd ubuntu echo "Hello Fluentd"
Hello Fluentd

在上面的fluentd 实例,会输出如下日志

2022-10-09 08:18:59.000000000 +0000 071b0e3e0c06: {"log":"Hello Fluentd","container_id":"071b0e3e0c063cafe3d503d11926910cfe6b4531ac315036d93874fe172646ad","container_name":"/stoic_mendeleev","source":"stdout"}

2. 远程 fluentd 实例

修改上面创建的远程fluentd配置文件如下


  @type http
  port 9880
  bind 0.0.0.0



  @type forward
  port 24224
  bind 0.0.0.0



  @type stdout

启动远程fluentd实例

docker run -p 9880:9880 -p 24224:24224 -v /root/tmp:/fluentd/etc fluent/fluentd:edge-debian -c /fluentd/etc/fluentd.conf

注意:
docker转发的 input type 是 forward

测试发送日志到远程fluentd实例

[root@localhost ~]# docker run --log-driver=fluentd --log-opt fluentd-address=10.0.31.70:24224 ubuntu echo "test log message for remote fluentd"
test log message for remote fluentd

远程 fluentd 实例显示如下

2022-10-09 08:52:36.000000000 +0000 465d12eb1df3: {"container_id":"465d12eb1df39e6de2d9ada56fce60ff384d5d6c753a019eed8f2540526d64d1","container_name":"/unruffled_aryabhata","source":"stdout","log":"test log message for remote fluentd"}

你可能感兴趣的:(docker 通过 fluentd 输出日志测试)