如何将docker主机传递给fluentd日志
我使用fluentd日志驱动程序来收集我的docker群集中的日志。
我创造了stream畅的服务:
docker service create --name fluentd --network my-network \ --mount type=bind,src=/data/fluentd,dst=/fluentd/etc \ --mount type=bind,src=/data/fluentd/logs,dst=/fluentd/log \ -p 24224:24224 -p 24224:24224/udp\ -e FLUENTD_CONF=fluent.conf fluent/fluentd:v0.12;
然后我用stream利的日志驱动程序创build了服务:
docker service create --name service-name --network my-network \ --log-driver=fluentd --log-opt fluentd-address=123.456.789.123:24224 --log-opt tag="service-name" \ --with-registry-auth service-name;
我的fluent.conf
是
<source> @type forward port 24224 bind 0.0.0.0 </source> <match service-name> @type copy <store> path /fluentd/log/service-name.*.log @type file time_slice_format %Y.%m.%d time_slice_wait 1m time_format %Y%m%dT%H%M%S%z compress gzip format json </store> </match>
日志文本具有以下格式:
{"container_id":"d798ca314b54a27f8b0e9acad46879632c7fdb1796d17c6850665ca93995c717", "container_name":"/service-name.1.rrcfvwvzrn17pyyt2zi69nhag", "source":"stdout","log":"2017-10-02 00:35:59 [qtp2091640041-40] DEBUG Log message..."}
如何添加服务器主机名巫婆容器运行到stream利的日志消息?
我试过这种方法:
1)安装docker_metadata_filter创build新的stream畅的图像。 我使用了以下Dockerfile
:
FROM fluent/fluentd:v0.12-onbuild RUN apk add --update --virtual .build-deps \ sudo build-base ruby-dev \ && sudo gem install \ fluent-plugin-docker_metadata_filter \ && sudo gem sources --clear-all \ && apk del .build-deps \ && rm -rf /var/cache/apk/* \ /home/fluent/.gem/ruby/2.3.0/cache/*.gem
2)用新的图像运行fluentd
服务。
但我仍然有格式的日志
{"container_id":"...", "container_name":"...", "source":"stdout", "log":"..."}