部署用于生产的Exceptionlees(一个强大易用的日志收集服务)

Exceptionless是一个很是优秀的事件记录服务,目前咱们的自部署的Exceptionless已经稳定运行了近一年的时间,收集了千万条事件信息。但Exceptionless官方自宿主部署的文档不是很是详细(不知道是否是为了保证云订阅)。今天就来详细介绍下用于生成环境的Exceptionless部署事项。前端

Exceptionless简介

Exceptionless从翻译来看是无异常的意思,其实它收集了不少异常信息。git

你们能够把他看作事一个很是好用的日志收集服务。github

还提供了,多组织、多项目。web

它是一个开源项目,做者也很是的热心,项目地址redis

https://github.com/exceptionless/Exceptionless后端

UI截图

image

image

image

image

咱们还经过了webhook将异常发送至钉钉进行实时通知服务器

image

这也是一个开源项目,项目地址为:app

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

支持的技术

  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