上一节已经部署好了 Graylog,现在学习如何用它来管理日志。

首先启动测试容器。

docker run -d \
           --log-driver=gelf \
           --log-opt gelf-address=udp://localhost:12201 \
           --log-opt tag="log-test-container-A" \
           busybox sh -c 'while true; do echo "This is a log message from container A"; sleep 10; done;'
docker run -d \
           --log-driver=gelf \
           --log-opt gelf-address=udp://localhost:12201 \
           --log-opt tag="log-test-container-B" \
           busybox sh -c 'while true; do echo "This is a log message from container B"; sleep 10; done;'

--log-driver=gelf 告诉 Docker 使用 GELF 的 logging driver。

--log-opt gelf-address=localhost:12201 将容器日志发送到 Graylog 的日志接收端口。

--log-opt tag="log-test-container-A"  --log-opt tag="log-test-container-B" 在日志中添加一个可选的 tag,用于区分不同的容器。

容器启动后,点击 Graylog 顶部菜单 Search,就能够查询到容器的日志了。

 与 Kibana 一样,Graylog 也提供了强大的查询功能,比如输入关键字 container B 能搜索出所有匹配的日志条目。

 

 与前面 ELK 一样,这里我们只是简单的将日志导入到 Graylog。实际上 Graylog 也可以对日志进行归类汇总、分析聚合、创建 Dashboard 等。下面这张图可以感受一下 Graylog 的特性,更多的功能留给大家自己去探索。

 

小结

本章介绍了 Docker 日志管理的方案,我们由 docker logs 引出了 Docker logging driver;进而学习了 ELK 日志处理 stack;通过 fluentd logging driver,我们很容易地将 fluentd 接入到日志管理方案中;最后我们还实践了与 ELK 同等量级的 Graylog。

与容器监控一样,容器日志管理也是一个百花齐放,高速迭代的技术领域。没有最好的,只有最适合的。

不同企业有不同的部署规模,有自己的管理流程,有各自的业务目标;运维团队有不同的技术背景,人员结构和工作方式;唯有保持开放的心态,多看、多学、多实践,才能构建出适合自己的系统。

书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html