分散式、微服務必須配個日誌管理系統才優秀,Exceptionless走起~~~

Code綜藝圈發表於2021-09-29

前言

在真實的專案中,不管是功能日誌、錯誤日誌還是異常日誌,已經是專案的重要組成部分。在原始的單體架構,通常看日誌的方式簡單粗暴,直接登入到伺服器,把日誌檔案拷貝下來進行分析;而如今分散式、微服務架構盛行,如果每個節點伺服器都去拷貝一次,估計還沒等你拷貝完,Boss就要炸鍋了;特別是遇到線上問題,肯定需要快速響應,所以好的日誌管理工具真的不能少,這裡就來說說Excetpionless日誌框架。

正文

1. Exceptionless簡介

Exceptionless是開源的,可以為 ASP.NET、Web API、WebForms、WPF、控制檯專案收集對應的異常、事件和日誌資訊,並將收集到的資訊進行分組歸類,有利於問題排查及相關資料統計。使用簡單也便捷,主要功能如下:

  • 針對關注資訊可進行通知提醒;
  • 收集資訊根據種類進行分組管理;
  • 記錄詳細的錯誤或異常資訊,排查錯誤更輕鬆;
  • 可以管理使用者檢視資訊;
  • 圖表形式顯示資料更加直觀;
  • 相關配置輕鬆設定;
  • 收集日誌、錯誤資訊等很方便;

通俗一點來說就是把異常、日誌等資訊收集在一起,統一的入口檢視;針對相關資訊進行分組,並以圖表的形式進行檢視,還可以對使用者關心的資訊進行通知提醒等擴充套件功能;

Exceptionless有兩種方式可以進行日誌管理:

  • 託管方式

    這種方式只需要在Exceptionless官網(https://exceptionless.com/)註冊一個賬號即可,儲存那些都不用管,比較省心,簡單三步走就能完成日誌收集,如下:

    這種方式是把採集到的資訊儲存到官方的伺服器上了,感覺不太好,一是日誌資訊其實對於一些專案來說很重要,二是要收費啊,免費版其實就是試用版,高階功能用不了,還要限制人數和專案數。

  • 自己搭建環境

    自己搭建環境,伺服器都是自己,私有化,爽歪歪;但這種方式,不好的點就是需要花錢買伺服器;

下面以WebAPI專案的方式進行演示,版本用.NET5。

2. 託管方式實現

2.1 註冊賬號並建立組織和專案

直接進入官網(https://exceptionless.com/)註冊一個賬號即可,註冊賬號絕對免費滴;

image-20210925110911088

建立組織和專案,如下:

先建立組織

再建立專案

2.2 引入NuGet包並在Startup.cs注入和使用

這裡建立了一個WebAPI專案,引入Exceptionless.AspNetCore 即可;

在Startup.cs檔案中進行注入相關服務並註冊到管道中,如下:

2.3 記錄日誌看效果

這裡在API中進行日誌記錄和異常資訊上報,如下:

看效果,登入進官網(https://exceptionless.com/),就會看到對應的異常資訊了,如下:

3. 自己搭建環境

2.1 安裝環境

Exceptionless提供Docker安裝版,這裡先以Dockerfile形式演示,Docker Compose就一樣的道理,只是分開容器部署更方便了。現在先直接下載(https://github.com/exceptionless/Exceptionless/releases),推薦7.1.0版本,7.1.1的折騰了我好久,要麼指令碼執行不成功,要麼缺少檔案;然後拷貝到對應的Docker主機上解壓,如下:

 # 如果unzip命令找不到,就需要安裝
 yum install -y unzip zip
 # 然後解壓
 unzip Exceptionless-7.1.0.zip

解壓後的資訊如下

Dockerfile 把對應的Exceptionless UI、Elasticsearch等都安裝在內部了由於我的雲服務記憶體比較小(記憶體大的可以不改),Dockerfile檔案中預設指定了Elasticsearch最小使用記憶體為1G,如果記憶體不夠,就會報錯空間不足,所以稍微改動一下Dockerfile,如下:

改好之後就直接構建為映象,執行如下命令:

  docker build -t test333 .

構建成功之後,直接通過映象啟動容器即可,如下命令

 docker run -it --name tt3 -p 5000:80 -p 9200:9200 test333

可能由於伺服器配置比較低的原因,啟動稍微需要點時間。

注:如果對docker還不太熟的,參考docker系列文章

Excpetionless API和Exceptionless UI 站點部署為一個站點了,如果能如下訪問頁面並能註冊成功,環境就搭建完成。

2.2 實操演練

登入Exceptionless UI系統(http://IP:5000/)進去之後就建立組織和專案,和託管的步驟差不多:

下一步就是針對選擇自己的專案型別,整合就行了(這步託管的也有,只是沒截圖),如下:

稍微改改Startup.cs檔案,其他不用動,如下:

好了,這樣就改完了,其他程式碼不動,執行訪問一下API ,看日誌效果:

2.3 Exceptionless 還提供介面呼叫

不管是託管還是自己搭建環境,都有提供對應的API進行呼叫,所以可以通過API的形式自己搞一個個性化的UI出來,也可以在其他系統中整合顯示日誌,反正介面在手,愛咋玩就咋玩;實在不行就改原始碼,嘿嘿嘿~~~。

Exceptionless的使用還是很簡單的,只是搭建的時候的花點心思。

程式碼地址https://gitee.com/CodeZoe/microservies-demo/tree/main/ExceptionlessDemo

Exceptionless官網https://exceptionless.com

Exceptionless原始碼https://github.com/exceptionless/Exceptionless/releases

總結

關於上面只是演示Exceptionless的使用,包含託管和自己搭建環境,基本上小夥伴都會選擇自己搭建;搭建過程需要花點心思,比如ES要不要叢集,要不要支援APM,郵件通知配置等等,不過現在可以通過Docker-compose一鍵安裝,最多就是需要等待一會。還有如果想搞點個性化的,也可以在Exceptionless的原始碼上做操作;後續細節再單獨彙總吧;

關注“Code綜藝圈”,和我一起學習吧;

相關文章