1. 程式人生 > >第 11 章 日誌管理 - 090 - ELK 完整部署和使用

第 11 章 日誌管理 - 090 - ELK 完整部署和使用

over mct red lib echo ide 輸出 ads start

ELK 完整部署和使用

幾乎所有的軟件和應用都有自己的日誌文件,容器也不例外。

前面我們已經知道 Docker 會將容器日誌記錄到 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log,那麽只要我們能夠將此文件發送給 ELK 就可以實現日誌管理。

ELK 提供了一個配套小工具 Filebeat,它能將指定路徑下的日誌文件轉發給 ELK。同時 Filebeat 會監控日誌文件,當日誌更新時,Filebeat 會將新的內容發送給 ELK。

安裝 Filebeat

下面在 Docker Host 中安裝和配置 Filebeat。

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.0.1-amd64.deb

sudo dpkg -i filebeat-7.0.1-amd64.deb

當你看到這篇文章時,Filebeat 可能已經有了更新的版本,請參考最新的安裝文檔 https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html

配置 Filebeat

Filebeat 的配置文件為 /etc/filebeat/filebeat.yml,我們需要告訴 Filebeat 兩件事:

監控哪些日誌文件?

將日誌發送到哪裏?

首先回答第一個問題

技術分享圖片

在 paths 中我們配置了兩條路徑:

/var/lib/docker/containers/*/*.log 是所有容器的日誌文件。

/var/log/syslog 是 Host 操作系統的 syslog。

接下來告訴 Filebeat 將這些日誌發送給 ELK。

Filebeat 可以將日誌發送給 Elasticsearch 進行索引和保存;

也可以先發送給 Logstash 進行分析和過濾,然後由 Logstash 轉發給 Elasticsearch。

為了不引入過多的復雜性,我們這裏將日誌直接發送給 Elasticsearch

技術分享圖片

如果要發送給 Logstash,可參考後半部分的註釋。

當前的日誌處理流程如下圖所示:

技術分享圖片

啟動 Filebeat

Filebeat 安裝時已經註冊為 systemd 的服務,可以直接啟動服務。

systemctl start filebeat.service

管理日誌

Filebeat 啟動後,正常情況下會將監控的日誌發送給 Elasticsearch。

指定 index pattern 為 filebeat-*,這與 Elasticsearch 中的 index一致。

Time-field name 選擇 @timestamp。

點擊 Create 創建 index pattern。

點擊 Kibana 左側 Discover 菜單,便可看到容器和 syslog 日誌信息。

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

下面我們啟動一個新的容器,該容器將向控制臺打印信息,模擬日誌輸出。

docker run busybox sh -c ‘while true; do echo "This is a log message from container busybox!"; sleep 10; done;‘

技術分享圖片

刷新 Kibana 頁面或者點擊右上角 Refresh 圖標,馬上就能看到 busybox 的日誌。

技術分享圖片

Kibana 也提供了強大的查詢功能,比如輸入關鍵字 busybox 能搜索出所有匹配的日誌條目。

技術分享圖片

我們這裏只是簡單地將日誌導入 ELK 並樸素地顯示出來,實際上 ELK 還可以對日誌進行歸類匯總、分析聚合、創建炫酷的 Dashboard 等,可以挖掘的內容很多,玩法很豐富。

---------------------------------------引用來自------------------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587985&idx=1&sn=b3d4639d1dff9feec0ca8d29e0b6e2aa&chksm=8d308208ba470b1ed110852f866dc1f1208a42da832766672e56f14ef10affed62051abf948c&scene=21#wechat_redirect

第 11 章 日誌管理 - 090 - ELK 完整部署和使用