close

MongoLogger

 

MongoLooger是一個簡單的Log函式庫,已經上傳到Nuget.org,內部使用Serilog元件。MongoLogger只要簡單設定一下就能快速的記錄任何訊息到你的Mogodb,並且在你指定的”記錄層級”發生時, 寄Email到你的信箱

 

本文後段補充說明如何透過購買的Simba Mongodb ODBC drive + Tableau BI工具,製作記錄監控記錄所需要的儀表版

 

一、Nuget安裝

Install-Package MongoLogger

二、使用方法

範例程式:這裏

設定說明

呼叫Init方法,傳入初始設定,設定選項說明如下

 

AppOption

AuthorName

你的英文名稱,此名稱會用在Mongodb的資料庫名稱前綴字上

 

ProjectName

專案英文名稱,此名稱會用在Mongodb的資料庫名稱上

MailNotifyOption

MailList

當發生問題時,訊息收件人Email列表

 

MailServer

郵件伺服器

 

MailSubjectTemplate

郵件的標題Template,{0}會替換為專案名稱

 

NetworkCredential

認證方式的設定,如果是用Mailgun的話就是帳密

 

LogLevel

記錄層級,大於等於此層級的訊息都會以郵件寄出,記錄層級請參考下文”記錄層級”

 

BatchPostingLimit

郵件累積多少筆記錄後批次送出

MongoOption

MongoDBIp

Mongodb的主機IP

 

CollectionName

Mongodb的Collection(資料表)名稱

 

CollectionMB

Collection儲存體大小多少MB

 

LogLevel

記錄層級,大於等於此層級的訊息都會以郵件寄出,記錄層級請參考下文”記錄層級”

 

BatchPostingLimit

累積多少筆記錄後批次寫入資料庫

 

BatchTimePostingLimit

累積時間多久寫入資料庫

     



 

記錄說明

此元件內部是使用Serilog做為記錄的機制,因此記錄的方式完全跟Serilog用法一樣

 

Serilog的特色是可以用{@變數名稱}這種方式來一次記錄”有多個屬性物件”,

利用Mongodb支援儲存json格式的資料,因此只要你的物件屬性是public就會被記錄下來,非常方便。

 

Serilog對log裏面變數的定義會直接變成mongodb的json資料,通常我會按BI的方式,將維度類的變數用d開頭命名,量值類的變數用m開頭,這樣方便我在後續設定監控專案時更容易去辨識。

 

進階說明請參考Serilog文件


 

三、記錄層級

Serilog登供了六種記錄層級,由小到大分別說明如下

  1. Verbose - 細節說明,特殊情況下使用

  2. Debug - 除錯訊息,一般不寫入資料庫

  3. Information - 資訊,一般記錄訊息,用來追縱程式碼正常執行

  4. Warning - 警告,服務可以有異常

  5. Error - 錯誤,系統發生錯誤

  6. Fatal - 重大錯誤,需要專人立即處理

層級有分大小,因此當你的記錄LogLevel設定為Information時,代表包含Information以上的Warring, Error, Fatal都會被記錄下來

 

四、Mongodb Collection 大小設定

Mongodb有一種特別的Collection叫”Capped Collection”,此類資料表當記錄寫入超過上限時,會自動刪除舊的資料,循環使用,因此不用擔心記錄寫爆掉。

Mongodb另一個特性是,你不需要自已先去定義資料庫、資料表、Schema。而是當程式第一次寫入時,所有的東西就會自動生出來。

 

Collection大小設定可以事先分析,一般Exception大小約2k,正常的記錄每筆大小通常不會大於2k,因此看你要記錄幾天、幾月或幾年,再來評估你所須的資料表大小。



 

五、Mongodb的資料庫名稱

此元件會自動取得你設定裏面的{作者名}_{專案名}作為資料庫名稱,如下圖,通常Log資料庫不須要DBA專人來管理,資料庫上有作者名的好處是,當空間不夠要刪除某一資料表時,可以馬上辨視出該資料庫由誰負責,是否可以刪除。此外,不建議你存放”有價值的記錄”到Mongodb,這類型的記錄最好還是放在關聯資料庫比較保險

(備註:我使用RoboMongo這套免費工具來查詢Mongodb)

六、製作儀表版

在製作儀表版之前,你需要透過Mongodb odbc drive來讓Tableau這類BI工具透過ODBC連到資料庫

Mongodb odbc drive目前市面上選擇不多,最後我選擇使用Simba公司的drive做為我們的odbc工具

試用載點

 

以下說明Simba的設定方法

安裝完drive後,在odbc的設定畫面可以看到多了一個資料源如下,點選【設定】

 

看到設定畫面如下,輸入資料庫名稱,接下來按「Shcema Defination」

 

Schema 定義畫面中,正常情況下只要按三個按鈕即可完成設定,如下圖。其他的細節可自行研究。


 

Tableau連線ODBC

公司目前購買的版本是9.2.4版,如果你的版本較舊,畫面可能有些出入。不過在設定上大致是相同的。


 

設定方法如下…



 

最後按下「連結」,稍候一下,就進入另一個畫面如下,此時可以選擇你最近一次設定的資料庫名稱



 

選擇完後千萬記得按下「放大鏡」按鈕,否則會找到不Collection。當Collection出現後,雙擊它(圖中的log)



 

點選到工作表,就可以開使設計你的儀表版了


 

因為本人較懶,所以不想解釋太多BI工具如何操作,有興趣的人可以自已玩玩,其實並不會太難

 

最後我製作出來的儀表版大概長這樣


 

七、補充說明Mailgun服務

 

當程式發生錯誤,寄出Email時,此時你會收到如下的Email信件。我使用Mailgun這間公司做為免費的Mail伺服器,一個帳號可以有每天500封信送上限,個人覺得很夠了,必竟很少一天有500個Exception要寄出。


 

https://mailgun.com

 

成功註冊後,登入後台會看到你的Domain清單,點擊active 的 DomainName

 

進入Domain的細節資訊頁面,請對照下圖框框,由上到下分別是

UserName

Server

Password

 

在MongoLogger的Mail設定中,分別填入對應的三個值即可開始使用了,如下圖


 

arrow
arrow

    rolence0515 發表在 痞客邦 留言(0) 人氣()