部署用於生產的Exceptionlees(一個強大易用的日志收集服務)


Exceptionless是一個非常優秀的事件記錄服務,目前我們的自部署的Exceptionless已經穩定運行了近一年的時間,收集了千萬條事件信息。但Exceptionless官方自宿主部署的文檔不是非常詳細(不知道是不是為了保證雲訂閱)。今天就來詳細介紹下用於生成環境的Exceptionless部署事項。

Exceptionless簡介

Exceptionless從翻譯來看是無異常的意思,其實它收集了很多異常信息。

大家可以把他看做事一個非常好用的日志收集服務。

還提供了,多組織、多項目。

它是一個開源項目,作者也非常的熱心,項目地址

https://github.com/exceptionless/Exceptionless

UI截圖

image

image

image

image

我們還通過了webhook將異常發送至釘釘進行實時通知

image

這也是一個開源項目,項目地址為:

https://github.com/RabbitTeam/exceptionless-webhooks

支持的技術

  1. .NET/.NET Core
  2. JavaScript
  3. NodeJs

部署要求

  • .NET4.7
  • IIS 7.5+
  • ElasticSearch 5.6
  • Redis

關於這些要求大家自行搜索部署,本文不做介紹。

Exceptionless結構

  1. WebUI
  2. WebAPI
  3. BackgroundTask

Exceptionless 由3個部分組成,分別是:可視化的UI視圖,WebAPI(主要用於程序發送日志和提供WebUI所需接口),后台任務(發送日志到es,跑webhook等)

本文會將這三個東西部署在一起。(機器有限,還有我們認為日志不是那么的重要,一般也很少宕機)

部署步驟

下載程序包

https://github.com/exceptionless/Exceptionless/releases

包內的wwwroot就是程序文件了

按需配置

配置文件

  1. Web.config
  2. app.config.*.js

為什么有兩個配置文件?因為我們之前說過WebUI和WebAPI從結構上是兩個不同的應用。(前后端分離)

所以我們需要對兩個不同的東西單獨配置。

Web.config

基本配置

RedisConnectionString

用於持久化狀態的redis連接串

例:10.10.10.82:6379,defaultDatabase=1

ElasticSearchConnectionString

es的地址,如是集群可逗號分隔

例:http://10.10.10.231:9200,http://10.10.10.232:9200

BaseURL

exceptionless基礎url

EnableSSL

是否啟用ssl

WebsiteMode

有三個值

Dev

QA

Production

顧名思義選Production就好了,主要是郵件發送的限制。

郵件發件配置

SmtpHost

SmtpPort

SmtpEncryption

SmtpUser

SmtpFrom

SmtpPassword

這段不解釋了。

高級設置

RunJobsInProcess

是否運行后台任務,理論上應該是false,但便捷起見我們沒有單獨跑后台任務,所以這邊設了true,等以后撐不住了再把后台任務分出來。

ElasticSearchNumberOfShards

es切片數,具體看es相關的說明,官方建議設置成 3.

ElasticSearchNumberOfReplicas

es副本數(備份),官方建議設置成 1.

EnableArchive

這個屬性文檔上面沒有寫(默認為true),默認Exceptionless會把接收到的事件信息進行本地化IO存儲,路徑是(StorageFolder的配置項,默認為:App_Data\storage)

這樣你會發現server上的硬盤占用非常的大,優於這些事件信息我們認為沒那么重要所以設成了false,好處是減輕了IO壓力,壞處是極端情況下會丟失事件數據(像es發送數據失敗)

這個有點像緩沖區的概念,exceptionless不會每接收到一條事件就去寫DB(es),而是通過一個后台任務批量的寫一批到es。

app.config.*.js

BASE_URL

和Web.config的BaseURL一致即可

USE_SSL

和Web.config的EnableSSL一致即可

加速靜態資源

exceptionless是歪果仁開發的,所以使用了一些國外的cdn資源,但這些資源在國內訪問是非常慢的,而且還有被牆,比如 google fonts。

這時候就需要把這些資源替換成國內高速可用的cdn資源。

這邊推薦一個國內的前端靜態資源庫

https://cdn.baomitu.com/

image

大家把這些資源在上面的網站上搜索,進行替換就好了。

注意還有 google fonts。

部署wwwroot

將wwwroot拷貝到服務器上,在IIS上創建一個web即可(相關文件權限記得開)

寫在最后

這樣一個可以用於生產的exceptionless就搭建完成了。

其中有幾個步驟官方文檔描述的不詳細,這邊在強調下

ElasticSearchConnectionString(多個es服務器以 ‘,’ 分隔)

EnableArchive(如果以默認值true,過段時間你會發現服務器的硬盤增長的非常快,exceptionless不會自動刪除)

加速靜態資源(如果不做這步你會發現打開exceptionless的ui非常的慢)
.NET技術棧QQ群:384413261(點擊加入 .NET Group


免責聲明!

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



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