(四)ELK 完整部署和使用
上一節我們已經[部署了容器化的 ELK],本節討論如何將日志匯入 ELK 并進行圖形化展示,
幾乎所有的軟體和應用都有自己的日志檔案,容器也不例外,前面我們已經知道 Docker 會將容器日志記錄到 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log,那么只要我們能夠將此檔案發送給 ELK 就可以實作日志管理,
要實作這一步其實不難,因為 ELK 提供了一個配套小工具 Filebeat,它能將指定路徑下的日志檔案轉發給 ELK,同時 Filebeat 很聰明,它會監控日志檔案,當日志更新時,Filebeat 會將新的內容發送給 ELK,
(1)安裝 Filebeat
下面在 Docker Host 中安裝和配置 Filebeat,
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-linux-x86_64.tar.gz
tar xzvf filebeat-7.10.0-linux-x86_64.tar.gz
當你看到這篇文章時,Filebeat 可能已經有了更新的版本,請參考最新的安裝檔案 https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html
(2)配置 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,可參考后半部分的注釋,
當前的日志處理流程如下圖所示:

(3)啟動 Filebeat
Filebeat 安裝時已經注冊為 systemd 的服務,可以直接啟動服務,
systemctl start filebeat.service
(4)管理日志
Filebeat 啟動后,正常情況下會將監控的日志發送給 Elasticsearch,重繪 Elasticsearch 的 JSON 介面 http://[Host IP]:9200/_search?pretty 進行確認,
這次我們能夠看到 filebeat-* 的 index,以及 Filebeat 監控的那兩個路徑下的日志,
Elasticsearch 已經創建了日志的索引并保存起來,接下來是在 Kibana 中展示日志,
首先需要配置一個 index pattern,即告訴 Kibana 查詢和分析 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 頁面或者點擊右上角 搜索圖示,馬上就能看到 busybox 的日志,
Kibana 也提供了強大的查詢功能,比如在搜索框里輸入關鍵字 busybox 能搜索出所有匹配的日志條目,
我們這里只是簡單地將日志匯入 ELK 并樸素地顯示出來,實際上 ELK 還可以對日志進行歸類匯總、分析聚合、創建炫酷的 Dashboard 等,可以挖掘的內容很多,玩法很豐富,由于這個教程的重點是容器,這里就不過多展開,下面這張圖可以感受一下 ELK 的能力,更多的功能留給大家自己去探索,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245091.html
標籤:其他
