前言
在真實的專案中,不管是功能日誌、錯誤日誌還是異常日誌,已經是專案的重要組成部分。在原始的單體架構,通常看日誌的方式簡單粗暴,直接登入到伺服器,把日誌檔案拷貝下來進行分析;而如今分散式、微服務架構盛行,如果每個節點伺服器都去拷貝一次,估計還沒等你拷貝完,Boss就要炸鍋了;特別是遇到線上問題,肯定需要快速響應,所以好的日誌管理工具真的不能少,這裡就來說說Excetpionless日誌框架。
正文
1. Exceptionless簡介
Exceptionless是開源的,可以為 ASP.NET、Web API、WebForms、WPF、控制檯專案收集對應的異常、事件和日誌資訊,並將收集到的資訊進行分組歸類,有利於問題排查及相關資料統計。使用簡單也便捷,主要功能如下:
- 針對關注資訊可進行通知提醒;
- 收集資訊根據種類進行分組管理;
- 記錄詳細的錯誤或異常資訊,排查錯誤更輕鬆;
- 可以管理使用者檢視資訊;
- 圖表形式顯示資料更加直觀;
- 相關配置輕鬆設定;
- 收集日誌、錯誤資訊等很方便;
通俗一點來說就是把異常、日誌等資訊收集在一起,統一的入口檢視;針對相關資訊進行分組,並以圖表的形式進行檢視,還可以對使用者關心的資訊進行通知提醒等擴充套件功能;
Exceptionless有兩種方式可以進行日誌管理:
-
託管方式
這種方式只需要在Exceptionless官網(https://exceptionless.com/)註冊一個賬號即可,儲存那些都不用管,比較省心,簡單三步走就能完成日誌收集,如下:
這種方式是把採集到的資訊儲存到官方的伺服器上了,感覺不太好,一是日誌資訊其實對於一些專案來說很重要,二是要收費啊,免費版其實就是試用版,高階功能用不了,還要限制人數和專案數。
-
自己搭建環境
自己搭建環境,伺服器都是自己,私有化,爽歪歪;但這種方式,不好的點就是需要花錢買伺服器;
下面以WebAPI專案的方式進行演示,版本用.NET5。
2. 託管方式實現
2.1 註冊賬號並建立組織和專案
直接進入官網(https://exceptionless.com/)註冊一個賬號即可,註冊賬號絕對免費滴;
建立組織和專案,如下:
先建立組織
再建立專案
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綜藝圈”,和我一起學習吧;