# ELK - 日誌集中&分析平台 ELK 是由三個服務 - **E**lasticsearch、**L**ogstash、**K**ibana 組合起來的開源日誌管理方案,提供 Log 蒐集、分析、查詢系統等,以下簡單介紹這三個服務: * Elasticsearch:是一個實時的分佈式搜索分析引擎,它能讓你以前所未見的速度和規模,去探索你的數據。它被用作**全文檢索**、**結構化搜索**、**分析**以及這三個功能的組合。 * logstash:是一款輕量級的日誌搜集處理框架,可以方便的把分散的、多樣化的日誌搜集起來,並進行自定義的處理,然後傳輸到指定的位置,比如某個伺服器或者文件。 * Kibana:開源的數據分析和可視化平台,它是 Elastic Stack 成員之一,設計用於和 Elasticsearch 協作。您可以使用 Kibana 對 Elasticsearch 索引中的數據進行搜索,查看,交互操作。您可以很方便的利用圖表,表格及地圖對數據進行多元化的分析和呈現,基於瀏覽器的界面便於您快速創建和分享動態數據儀表板來追踪 Elasticsearch 的實時數據變化。 目前所使用的 ELK 為 opensource 的 docker 版本,最新支援到 Elasticsearch ``7.8.0``,可以永久使用 [Basic license](https://www.elastic.co/subscriptions)。 --- ## Log 搜集方式 因為開發、測試站都是使用 GCP 的虛擬機,有權限及網路控管,為了更方便查詢 log,所以就使用 [ngrok](https://ngrok.com/) 做 webhook 中繼 ![](https://i.imgur.com/A8O2NrG.png) >如圖,ngrok 開啟本機 logstash 的 webhook 接著從 VM 透過 [netcat](https://blog.gtwang.org/linux/linux-utility-netcat-examples/) 將 log file 傳送到本機的 logstash。 ```shell= nc [NGROK_HOST] [PORT] < [LOGFILE] #例如 nc 0.tcp.ngrok.io 12345 < test.log ``` logstash 就會將 file 送到 elasticsearch ,這樣就完成了 log 蒐集 --- ## Kibana 使用簡介 輸入 kibana URL >目前暫時架設在本機上,可透過公司內網 http://192.168.133.119:5601 連接 >帳號 : ``elastic`` 密碼 : ``changeme`` ![](https://i.imgur.com/Q6sN3bK.png) 可以看到 kibana 預設首頁 按下左上角的圖案 ![](https://i.imgur.com/cttQhn5.png) 就會進到 log 搜索頁面 ![](https://i.imgur.com/XPLJrLM.png) 點選右上方的日曆圖案,會出現時間區間的輸入選項 ![](https://i.imgur.com/wJQmSF8.png) 使用預設的快速選項 ``Today`` 會顯示今天24小時內的 log 資訊 ![](https://i.imgur.com/vOlt4Kr.png) 左邊的 ``Available fields``可以過濾想看到的欄位資訊 ![](https://i.imgur.com/KzccK3O.png) 上方的 ``Search`` 可以輸入搜索條件,類似 google search 的全文檢索功能 ![](https://i.imgur.com/I9CrSV5.png) 另外還支援 kibana 自行定義的 `KQL` 語法,可以實現複雜的搜索條件 >[KQL相關文件](https://docs.microsoft.com/zh-cn/sharepoint/dev/general-development/keyword-query-language-kql-syntax-reference) ELK 有相當多的功能與使用情境,這邊我們只有用到簡單的 log 蒐集 & 搜索。實際上根據使用情境,會有更進階的功能,但是伴隨而來的是更複雜的設定。 --- 參考資料: [The Complete Guide to the ELK Stack](https://logz.io/learn/complete-guide-elk-stack/) [ELK簡介](https://claire-chang.com/2019/10/09/elk%E4%BB%8B%E7%B4%B9/) [ELK 教學 - 從無到有安裝 ELK (CentOS/Red Hat)](https://blog.johnwu.cc/article/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-red-hat.html) [docker-ELK github](https://github.com/deviantony/docker-elk) [ngrok](https://ngrok.com/docs)