共计 1657 个字符,预计需要花费 5 分钟才能阅读完成。
随着 Docker 容器广泛应用,,大规模运行的容器集群来说,日志不能集中管理是一件很痛苦的事情。不能合理的收集,管理检索应用日志,在应用发生了故障的时候将无法很好的追溯问题发生的原因。本文主要介绍 Docker 配置 Fluentd 进行日志管理
1、快速启动 Fluentd
# docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log fluent/fluentd
此时会在宿主机 /data 目录下生成 data.<fluentd 容器 id>.log, 所有收集到的日志文件将存储至此。
2、启动一个测试容器查看日志是否存储到 fluentd
# docker run -d –log-driver fluentd –log-opt fluentd-address=localhost:24224 –log-opt tag=”nginx-test” –log-opt fluentd-async-connect –name nginx-test -p 8080:80 nginx
–log-driver: 配置 log 驱动
–log-opt: 配置 log 相关的参数
fluentd-address: fluentd 服务地址
fluentd-async-connect:fluentd-docker 异步设置, 避免 fluentd 挂掉之后导致 Docker 容器也挂了
配置好之后访问 nginx 页面,每次刷新会出现如下日志
2018-05-03T07:21:55+00:00 nginx-test {
“container_name”: “/nginx-test”,
“source”: “stdout”,
“log”: “172.96.247.193 – – [03/May/2018:07:21:55 +0000] \”GET / HTTP/1.1\” 304 0 \”-\” \”Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\” \”-\””,
“container_id”: “0cd8d7d68fe233238679b31327d53ad0fffe5b419f1847ad9140db063dded7f3”
}
3、Docker 全局日志配置
# cat /etc/docker/daemon.json
{
“registry-mirrors”: [“https://zcg96r7h.mirror.aliyuncs.com”],
“log-driver”: “fluentd”,
“log-opts”: {
“fluentd-address”: “127.0.0.1:24224”
}
}
# 注意:
a、使用了 fluentd 之后,将无法使用 docker logs 查看;
b、在配置 fluentd 之前创建的容器日志不会写入到 Fluentd,如果想要存储进去需要重建容器;
c、全局配置 fluentd 之后,如果 fluentd 服务异常,将无法启动容器;
# docker run –rm nginx
docker: Error response from daemon: failed to initialize logging driver: dial tcp 127.0.0.1:24224: getsockopt: connection refused.
再启动一个测试容器,可以查看到日志同样存储到 Fluentd
参考文档:
1、https://www.fluentd.org/guides/recipes/docker-logging
2、安装文档:https://docs.fluentd.org/v1.0/articles/quickstart#step-1:-installing-fluentd
3、Docker 配置 Fluentd:https://docs.docker.com/config/containers/logging/fluentd/