zoukankan      html  css  js  c++  java
  • 部署用于生产的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_Datastorage)

    这样你会发现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

  • 相关阅读:
    jQuery操作单选按钮(Radio)
    Django:DRF实现模糊搜索
    Django:实现导入功能,及下载模版
    python使用DES加密解密
    在线OCR识别
    bootstrap-table导出时存在bootstrap-switch按钮如何导出
    Django:解决时间显示格式含有T
    翻页时bootstrap-switch样式失效
    bootstraptable导出
    统计文件行数
  • 原文地址:https://www.cnblogs.com/ants/p/8580890.html
Copyright © 2011-2022 走看看