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


以上

沒有留言:

張貼留言

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。