Graylog 是與 ELK 能夠相提並論的一款集中式日誌管理方案,支持數據收集、檢索、可視化 Dashboard。本節將實踐用 Graylog 來管理 Docker 日誌。html
Graylog 架構以下圖所示:docker
Graylog 負責接收來自各類設備和應用的日誌,併爲用戶提供 Web 訪問接口。api
Elasticsearch 用於索引和保存 Graylog 接收到的日誌。瀏覽器
MongoDB 負責保存 Graylog 自身的配置信息。架構
與 ELK 同樣,Graylog 的部署方案很靈活,快速搭建一個 all-in-one 的環境對於學習頗有益處;部署一個高可用高伸縮性的集羣對於生成環境也是必要的。elasticsearch
接下來咱們將在容器環境下搭建 Graylog。學習
Graylog 及其相關組件都將以容器的方式部署。spa
MongoDB
docker run --name graylog-mongo -d mongo:3日誌
Elasticsearchcode
docker run --name graylog-elasticsearch -d elasticsearch:2 elasticsearch -Des.cluster.name="graylog"
Graylog
docker run --link graylog-mongo:mongo \ --link graylog-elasticsearch:elasticsearch \ -p 9000:9000 \ -p 12201:12201/udp \ -e GRAYLOG_WEB_ENDPOINT_URI="http://192.168.56.101:9000/api" \ -e GRAYLOG_PASSWORD_SECRET=somepasswordpepper \ -e GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 \ -d graylog2/server
--link
參數讓 Graylog 容器可以用主機名 mongo
和 elasticsearch
訪問 MongoDB 和 Elasticsearch 的服務。
-p 9000:9000
映射 Graylog 的 Web 服務端口 9000。
-p 12201:12201/udp
映射 Graylog 接收日誌數據的 UDP 端口 12201。
GRAYLOG_WEB_ENDPOINT_URI
指定 Graylog 的 Web 訪問 URI,請注意這裏須要使用 Docker Host 的外部 IP(在實驗環境中爲 192.168.56.101)。
GRAYLOG_ROOT_PASSWORD_SHA2
指定 Graylog 管理員用戶密碼的哈希值,在這個例子中密碼爲 admin
。能夠經過以下命令生成本身的密碼哈希,好比:
echo -n yourpassword | shasum -a 256
容器啓動後,在 Web 瀏覽器中訪問 http://[Docker Host IP]:9000
用戶名/密碼 = admin/admin
登陸後顯示 Getting Started
頁面。
目前 Graylog 還無法接收任何日誌,咱們須要配置一個 Input
,點擊頂部菜單 System -> Inputs
。
Graylog 支持多種 Input 類型,與 Graylog 對接的 Docker logging driver 是 gelf
,所以這裏咱們須要運行一個 GELF UDP
類型的 Input。
點擊 。
在 Node
列表中選擇 Graylog 容器。
Title
命名爲 docker GELF input
。
其餘保持默認值,其中 port 12201
即爲前面啓動容器時映射到 Host 的端口,用於接收日誌數據。
點擊,Input 成功運行。
Graylog 已經準備就緒,接下來就能夠將容器的日誌發送給 Graylog 了,下節繼續。
書籍:
1.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html