| 知乎专栏 |
查看默认驱动 docker info --format '{{.LoggingDriver}}'
[root@testing ~]# docker info --format '{{.LoggingDriver}}'
json-file
查看容器日志配置
[root@testing ~]# docker inspect -f '{{.HostConfig.LogConfig.Type}}' api
fluentd
在 Docker 中安装 Fluentd
准备 test.conf 文件
<source> @type forward </source> <match **> @type stdout </match>
启动 fluentd 接收日志
$ docker run -it -p 24224:24224 -v /path/to/conf/test.conf:/fluentd/etc/test.conf -e FLUENTD_CONF=test.conf fluent/fluentd:latest
运行你的程序
$ docker run --log-driver=fluentd your/application
如果是远程主机使用 fluentd-address 参数
docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224 docker run --log-driver=fluentd --log-opt fluentd-address=tcp://fluentdhost:24224 docker run --log-driver=fluentd --log-opt fluentd-address=unix:///path/to/fluentd.sock
以 Nginx 为例:
$ docker run -d \
--log-driver=fluentd \
--log-opt fluentd-address=10.10.0.1:24224 \
--log-opt tag="docker.{{.Name}}" \
nginx
fluentd.conf
<source>
@type forward
</source>
<match **>
@type file
path /var/log/fluentd/${tag}
append true
<format>
@type single_value
message_key log
</format>
<buffer tag,time>
@type file
timekey 1d
timekey_wait 10m
flush_mode interval
flush_interval 30s
</buffer>
</match>
version: '3.9'
services:
fluentd:
image: fluent/fluentd:latest
container_name: fluentd
hostname: fluentd.netkiller.cn
restart: always
volumes:
- /opt/netkiller.cn/ops.netkiller.cn/fluentd/conf:/fluentd/etc
- /var/log/fluentd:/var/log/fluentd
ports:
- "24224:24224"
- "24224:24224/udp"
environment:
FLUENTD_CONF: fluentd.conf
api:
image: openjdk:8
container_name: api
restart: always
hostname: api.netkiller.cn
extra_hosts:
- www.netkiller.cn:139.186.170.130
environment:
TZ: Asia/Shanghai
JAVA_OPTS: -Xms1024m -Xmx4096m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
ports:
- 8088:8080
volumes:
- /opt/netkiller.cn/api.netkiller.cn:/app
- /opt/netkiller.cn/api.netkiller.cn/logs:/app/logs
working_dir: /app
#links:
# - fluentd
logging:
driver: fluentd
options:
fluentd-address: 192.168.30.10:24224
tag: httpd.access
entrypoint: java -jar /app/api.netkiller.cn.jar
command:
--spring.profiles.active=test
--server.port=8080