上一節我們介紹了graylog,它是一款可以和ELK 相提並論的集中式日誌管理系統,它能支持數據收集、檢索、可視化一整套流程,並且我們上一節學習了它的安裝,這節我們學習它和docker容器進行結合。
運行測試容器
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 使用的 logging driver類型為gelf。
--log-opt gelf-address=localhost:12201容器將日誌發送到gelf埠12201
--log-opt tag="log-test-container-A" 和 --log-opt tag="log-test-container-B" 為了區分不同的容器日誌,打標籤tag。
容器成功運行後,點擊頂部菜單搜索 Search,就能夠查詢到容器的日誌了。
graylog與Kibana一樣,它也提供了強大的查詢功能,比如下面輸入關鍵字 container B 就能搜索出所有匹配container B的日誌條目。
與前面我們學習的ELK一樣,我們只是將容器日誌簡單導入了Graylog。事實上Graylog 也是可以對容器日誌進行歸類匯總、分析聚合、創建Dashboard等。
下面的圖可以直觀感受一下 Graylog 的特性,它的更多的功能我們就不介紹了,留給大家自己去探索。
本章小結我們簡單介紹下本章所學的容器Docker日誌管理,我們首先學習了 docker logs ,接著學習了 Docker logging driver;進而學習了比較火的elk和容器日誌結合;接著我們通過學習另一個logging driver-fluentd,將 fluentd 接入到日誌管理方案中;最後這節我們還簡單學習了與 ELK 相當的的日誌管理方案Graylog。
這麼多日誌方案,我們在實際使用中,怎麼選呢?其實與容器監控一樣沒有最好的,只有最適合的。不同企業有不同的部署規模,有自己的管理流程,有各自的業務目標;運維團隊有不同的技術背景,人員結構和工作方式;唯有保持開放的心態,多看、多學、多實踐,才能構建出適合自己的系統。