接續前面兩篇文章,在 Kibana 裡顯示 Log
Docker-Compose 建立 Elasticsearch 與 Kibana 服務
ASP.NET Core 使用 NLog 將 Log 寫到 Elasticsearch
Kibana
在一開始使用 docker-compose 建立 elasticsearch 相關服務就有包含了 Kibana,只是還沒有資料可以顯示,而現在我們已經將 log 寫到 elasticsearch 裡,就可以用 Kibana 顯示並查詢這些 log 資料。
Create index pattern
Step1 of 2: Define index pattern
點選「Discover」,在一開始還沒有設定 index pattern 時就會要我們建立(如果已經有建立了其他 index pattern,要新建立就到 Management 裡去建立新的 index pattern)
我在 NLog 裡將 log 寫到 elasticsearch 的 index 是以日期的方式建立
所以在 Kibana 要建立的 index pattern 就用「dotnetcore-nlog-elk-*」,當有 match 到 index 時就會在下方顯示 Success 並列出 index,接著就點選「Next Step」
Step 2 of 2: Configure settings
這邊的下拉選單裡只有「@timestamp」可以選,就選它吧,接著點選「Create index pattern」就完成了 index pattern 的建立。
Discover
完成建立 index pattern 之後就可以到 Discover,這時候可以看到顯示 ASP.NET Core 網站執行時寫到 elasticsearch 的 log
如果沒有看到的話,試著調整頁面右上方的時間區間 (Time Range)
調整顯示的欄位
沒有調整要顯示的欄位時,在列表裡是用 Time 和 _source 顯示,為了要方便檢視 log 資料,所以要調整一下顯示欄位。
這邊我選了 MachineName, level, logger, message
最後要記得 Save 喔
簡單查詢
要查詢 level 為 info 的資料,在查詢輸入框裡填入「level:info」
要查詢 logger 裡有包含 HomeController 的資料,就用「logger:*HomeController」
資料的內容
點選每筆資料最右方的三角形 icon 就可以展開資料明細內容
這邊簡單的說明怎麼在 Kibana 顯示寫到 elasticsearch 的 log 資料,還有很多的功能並未說明,不過關於 ELK 的資料是真的很多,所以就請大家查看網路上的相關教學文章。
其實公司在兩年多前就已經開始使用 Exceptionless ( self hosting ) 來記錄 Exception 與 log,Exceptionless 一樣也是將資料寫到 elasticsearch 裡,但是 Exceptionless 提供比較完整的查詢與管理功能,尤其是在多團隊與多專案的環境下會比較適合。如果團隊需要一個完整的 log 系統,會建議使用 Exceptionless。
既然建議使用 Exceptionless 又為何會介紹 Elasticsearch 和 Kibana 呢?
這是因為有時候會想要自行處理 log 以及後續的 log 顯示與圖表、統計等,而在網路上看到許多 ELK 的應用,所以就想來試試看 ASP.NET Core + NLog + Elasticsearch + Kibana 的整合應用。
相關連結
Query String Query | Elasticsearch Reference [6.x] | Elastic
https://github.com/exceptionless/Exceptionless
以上
沒有留言:
張貼留言