上一節已經部署好了 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