# 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 中繼  >如圖,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``  可以看到 kibana 預設首頁 按下左上角的圖案  就會進到 log 搜索頁面  點選右上方的日曆圖案,會出現時間區間的輸入選項  使用預設的快速選項 ``Today`` 會顯示今天24小時內的 log 資訊  左邊的 ``Available fields``可以過濾想看到的欄位資訊  上方的 ``Search`` 可以輸入搜索條件,類似 google search 的全文檢索功能  另外還支援 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) ###### tags: `elk` `docker`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.