知乎专栏 | 多维度架构 |
查看默认驱动 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