上一节已经部署好了 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