分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~
前言
在真實的項目中,不管是功能日志、錯誤日志還是異常日志,已經(jīng)是項目的重要組成部分。在原始的單體架構(gòu),通常看日志的方式簡單粗暴,直接登錄到服務(wù)器,把日志文件拷貝下來進行分析;而如今分布式、微服務(wù)架構(gòu)盛行,如果每個節(jié)點服務(wù)器都去拷貝一次,估計還沒等你拷貝完,Boss就要炸鍋了;特別是遇到線上問題,肯定需要快速響應(yīng),所以好的日志管理工具真的不能少,這里就來說說Excetpionless日志框架。
正文
1. Exceptionless簡介
Exceptionless是開源的,可以為 ASP.NET、Web API、WebForms、WPF、控制臺項目收集對應(yīng)的異常、事件和日志信息,并將收集到的信息進行分組歸類,有利于問題排查及相關(guān)數(shù)據(jù)統(tǒng)計。使用簡單也便捷,主要功能如下:
針對關(guān)注信息可進行通知提醒;
收集信息根據(jù)種類進行分組管理;
記錄詳細的錯誤或異常信息,排查錯誤更輕松;
可以管理用戶查看信息;
圖表形式顯示數(shù)據(jù)更加直觀;
相關(guān)配置輕松設(shè)置;
收集日志、錯誤信息等很方便;
通俗一點來說就是把異常、日志等信息收集在一起,統(tǒng)一的入口查看;針對相關(guān)信息進行分組,并以圖表的形式進行查看,還可以對用戶關(guān)心的信息進行通知提醒等擴展功能;
Exceptionless有兩種方式可以進行日志管理:
托管方式
這種方式只需要在Exceptionless官網(wǎng)(https://exceptionless.com/)注冊一個賬號即可,存儲那些都不用管,比較省心,簡單三步走就能完成日志收集,如下:
這種方式是把采集到的信息存儲到官方的服務(wù)器上了,感覺不太好,一是日志信息其實對于一些項目來說很重要,二是要收費啊,免費版其實就是試用版,高級功能用不了,還要限制人數(shù)和項目數(shù)。
自己搭建環(huán)境
自己搭建環(huán)境,服務(wù)器都是自己,私有化,爽歪歪;但這種方式,不好的點就是需要花錢買服務(wù)器;
下面以WebAPI項目的方式進行演示,版本用.NET5。
2. 托管方式實現(xiàn)
2.1 注冊賬號并創(chuàng)建組織和項目
直接進入官網(wǎng)(https://exceptionless.com/)注冊一個賬號即可,注冊賬號絕對免費滴;
image-20210925110911088創(chuàng)建組織和項目,如下:
先創(chuàng)建組織
再創(chuàng)建項目
2.2 引入NuGet包并在Startup.cs注入和使用
這里創(chuàng)建了一個WebAPI項目,引入Exceptionless.AspNetCore 即可;
在Startup.cs文件中進行注入相關(guān)服務(wù)并注冊到管道中,如下:
2.3 記錄日志看效果
這里在API中進行日志記錄和異常信息上報,如下:
看效果,登錄進官網(wǎng)(https://exceptionless.com/),就會看到對應(yīng)的異常信息了,如下:
3. 自己搭建環(huán)境
2.1 安裝環(huán)境
Exceptionless提供Docker安裝版,這里先以Dockerfile形式演示,Docker Compose就一樣的道理,只是分開容器部署更方便了。現(xiàn)在先直接下載(https://github.com/exceptionless/Exceptionless/releases),推薦7.1.0版本,7.1.1的折騰了我好久,要么腳本執(zhí)行不成功,要么缺少文件;然后拷貝到對應(yīng)的Docker主機上解壓,如下:
#?如果unzip命令找不到,就需要安裝yum?install?-y?unzip?zip#?然后解壓unzip?Exceptionless-7.1.0.zip解壓后的信息如下
Dockerfile 把對應(yīng)的Exceptionless UI、Elasticsearch等都安裝在內(nèi)部了,由于我的云服務(wù)內(nèi)存比較小(內(nèi)存大的可以不改),Dockerfile文件中默認指定了Elasticsearch最小使用內(nèi)存為1G,如果內(nèi)存不夠,就會報錯空間不足,所以稍微改動一下Dockerfile,如下:
改好之后就直接構(gòu)建為鏡像,執(zhí)行如下命令:
docker?build?-t?test333?.構(gòu)建成功之后,直接通過鏡像啟動容器即可,如下命令
docker?run?-it?--name?tt3?-p?5000:80?-p?9200:9200?test333可能由于服務(wù)器配置比較低的原因,啟動稍微需要點時間。
注:如果對docker還不太熟的,參考docker系列文章
Excpetionless API和Exceptionless UI 站點部署為一個站點了,如果能如下訪問頁面并能注冊成功,環(huán)境就搭建完成。
2.2 實操演練
登錄Exceptionless UI系統(tǒng)(http://IP:5000/)進去之后就創(chuàng)建組織和項目,和托管的步驟差不多:
下一步就是針對選擇自己的項目類型,集成就行了(這步托管的也有,只是沒截圖),如下:
稍微改改Startup.cs文件,其他不用動,如下:
好了,這樣就改完了,其他代碼不動,運行訪問一下API ,看日志效果:
2.3 Exceptionless 還提供接口調(diào)用
不管是托管還是自己搭建環(huán)境,都有提供對應(yīng)的API進行調(diào)用,所以可以通過API的形式自己搞一個個性化的UI出來,也可以在其他系統(tǒng)中集成顯示日志,反正接口在手,愛咋玩就咋玩;實在不行就改源代碼,嘿嘿嘿~~~。
Exceptionless的使用還是很簡單的,只是搭建的時候的花點心思。
代碼地址:https://gitee.com/CodeZoe/microservies-demo/tree/main/ExceptionlessDemo
Exceptionless官網(wǎng):https://exceptionless.com
Exceptionless源代碼:https://github.com/exceptionless/Exceptionless/releases
總結(jié)
關(guān)于上面只是演示Exceptionless的使用,包含托管和自己搭建環(huán)境,基本上小伙伴都會選擇自己搭建;搭建過程需要花點心思,比如ES要不要集群,要不要支持APM,郵件通知配置等等,不過現(xiàn)在可以通過Docker-compose一鍵安裝,最多就是需要等待一會。還有如果想搞點個性化的,也可以在Exceptionless的源代碼上做操作;后續(xù)細節(jié)再單獨匯總吧;
總結(jié)
以上是生活随笔為你收集整理的分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NoSQL 是否可以用来做日志中心 ?
- 下一篇: iNeuOS工业互联网操作系统部署在华为