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登供了六種記錄層級,由小到大分別說明如下
-
Verbose - 細節說明,特殊情況下使用
-
Debug - 除錯訊息,一般不寫入資料庫
-
Information - 資訊,一般記錄訊息,用來追縱程式碼正常執行
-
Warning - 警告,服務可以有異常
-
Error - 錯誤,系統發生錯誤
-
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要寄出。
成功註冊後,登入後台會看到你的Domain清單,點擊active 的 DomainName
進入Domain的細節資訊頁面,請對照下圖框框,由上到下分別是
UserName
Server
Password
在MongoLogger的Mail設定中,分別填入對應的三個值即可開始使用了,如下圖
留言列表