天天看點

ELK 完整部署和使用 - 每天5分鐘玩轉 Docker 容器技術(90)

上一節已經部署了容器化的 ELK,本節讨論如何将日志導入 ELK 并進行圖形化展示。

幾乎所有的軟體和應用都有自己的日志檔案,容器也不例外。前面我們已經知道 Docker 會将容器日志記錄到 <code>/var/lib/docker/containers/&lt;contariner ID&gt;/&lt;contariner ID&gt;-json.log</code>,那麼隻要我們能夠将此檔案發送給 ELK 就可以實作日志管理。

要實作這一步其實不難,因為 ELK 提供了一個配套小工具 Filebeat,它能将指定路徑下的日志檔案轉發給 ELK。同時 Filebeat 很聰明,它會監控日志檔案,當日志更新時,Filebeat 會将新的内容發送給 ELK。

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

Filebeat 的配置檔案為 <code>/etc/filebeat/filebeat.yml</code>,我們需要告訴 Filebeat 兩件事:

監控哪些日志檔案?

将日志發送到哪裡?

首先回答第一個問題。

在 <code>paths</code> 中我們配置了兩條路徑:

<code>/var/lib/docker/containers/*/*.log</code> 是所有容器的日志檔案。

<code>/var/log/syslog</code> 是 Host 作業系統的 syslog。

接下來告訴 Filebeat 将這些日志發送給 ELK。

Filebeat 可以将日志發送給 Elasticsearch 進行索引和儲存;也可以先發送給 Logstash 進行分析和過濾,然後由 Logstash 轉發給 Elasticsearch。

為了不引入過多的複雜性,我們這裡将日志直接發送給 Elasticsearch。

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

目前的日志處理流程如下圖所示:

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

Filebeat 啟動後,正常情況下會将監控的日志發送給 Elasticsearch。重新整理 Elasticsearch 的 JSON 接口 http://[Host IP]:9200/_search?pretty 進行确認。

這次我們能夠看到 <code>filebeat-*</code> 的 <code>index</code>,以及 Filebeat 監控的那兩個路徑下的日志。

好,Elasticsearch 已經建立了日志的索引并儲存起來,接下來是在 Kibana 中展示日志。

首先需要配置一個 <code>index pattern</code>,即告訴 Kibana 查詢和分析 Elasticsearch 中的哪些日志。

指定 <code>index pattern</code> 為 <code>filebeat-*</code>,這與 Elasticsearch 中的 <code>index</code>一緻。

<code>Time-field name</code> 選擇 <code>@timestamp</code>。

點選 <code>Create</code> 建立 <code>index pattern</code>。

點選 Kibana 左側 <code>Discover</code> 菜單,便可看到容器和 syslog 日志資訊。

下面我們啟動一個新的容器,該容器将向控制台列印資訊,模拟日志輸出。

重新整理 Kibana 頁面或者點選右上角  圖示,馬上就能看到 busybox 的日志。

Kibana 也提供了強大的查詢功能,比如輸入關鍵字 <code>busybox</code> 能搜尋出所有比對的日志條目。

我們這裡隻是簡單地将日志導入 ELK 并樸素地顯示出來,實際上 ELK 還可以對日志進行歸類彙總、分析聚合、建立炫酷的 Dashboard 等,可以挖掘的内容很多,玩法很豐富。由于這個教程的重點是容器,這裡就不過多展開。下面這張圖可以感受一下 ELK 的能力,更多的功能留給大家自己去探索。

ELK 咱們就讨論到這裡,下一節學習 Fluentd。

書籍:

1.《每天5分鐘玩轉Docker容器技術》

<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>

2.《每天5分鐘玩轉OpenStack》

<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>

本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1979203