網頁

2018年7月9日 星期一

ASP.NET Core 使用 NLog 將 Log 寫到 Elasticsearch - Kibana 顯示 log

接續前面兩篇文章,在 Kibana 裡顯示 Log

Docker-Compose 建立 Elasticsearch 與 Kibana 服務
ASP.NET Core 使用 NLog 將 Log 寫到 Elasticsearch



Kibana

在一開始使用 docker-compose 建立 elasticsearch 相關服務就有包含了 Kibana,只是還沒有資料可以顯示,而現在我們已經將 log 寫到 elasticsearch 裡,就可以用 Kibana 顯示並查詢這些 log 資料。

http://localhost:5601

image

Create index pattern

Step1 of 2: Define index pattern

點選「Discover」,在一開始還沒有設定 index pattern 時就會要我們建立(如果已經有建立了其他 index pattern,要新建立就到 Management 裡去建立新的 index pattern)

image

我在 NLog 裡將 log 寫到 elasticsearch 的 index 是以日期的方式建立

image

所以在 Kibana 要建立的 index pattern 就用「dotnetcore-nlog-elk-*」,當有 match 到 index 時就會在下方顯示 Success 並列出 index,接著就點選「Next Step」

image

Step 2 of 2: Configure settings

這邊的下拉選單裡只有「@timestamp」可以選,就選它吧,接著點選「Create index pattern」就完成了 index pattern 的建立。

image

SNAGHTML63f8aaa8


Discover

完成建立 index pattern 之後就可以到 Discover,這時候可以看到顯示 ASP.NET Core 網站執行時寫到 elasticsearch 的 log

SNAGHTML64078544

如果沒有看到的話,試著調整頁面右上方的時間區間 (Time Range)

image


調整顯示的欄位

沒有調整要顯示的欄位時,在列表裡是用 Time 和 _source 顯示,為了要方便檢視 log 資料,所以要調整一下顯示欄位。

這邊我選了 MachineName, level, logger, message

最後要記得 Save 喔

SNAGHTML6417a2a2


簡單查詢

要查詢 level 為 info 的資料,在查詢輸入框裡填入「level:info

SNAGHTML64233b52

要查詢 logger 裡有包含 HomeController 的資料,就用「logger:*HomeController

SNAGHTML64224df5


資料的內容

點選每筆資料最右方的三角形 icon 就可以展開資料明細內容

image

image



這邊簡單的說明怎麼在 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://exceptionless.com/

https://github.com/exceptionless/Exceptionless


以上

沒有留言:

張貼留言