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


前言

在真實的項目中,不管是功能日志、錯誤日志還是異常日志,已經是項目的重要組成部分。在原始的單體架構,通常看日志的方式簡單粗暴,直接登錄到服務器,把日志文件拷貝下來進行分析;而如今分布式、微服務架構盛行,如果每個節點服務器都去拷貝一次,估計還沒等你拷貝完,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綜藝圈”,和我一起學習吧;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM