在之前我有专门写两篇文章介绍过Exceptionless这款开源日志项目的使用和部署,但是当时是基于4.1.0版本(2017年的release),时隔两年多Exceptionless也推出了5.0.0版本。

(1)

(2)

01

关于Exceptionless 5.0.0

Exceptionless 是一个开源的实时的好用的日志收集框架,它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置。但是之前的版本将其Web和API绑定在了Windows平台通过IIS运行,对于已经步入云原生时代的我们显得有点格格不入。5.0.0的发布解决了这一痛点,其最大的变化就是基于ASP.NET Core重写并支持跨平台,也就是说当初我们设想的要是能够基于Docker部署在Linux服务器下就更好了的愿望已经实现了,在此真心感谢Exceptionless项目的各位贡献者。本文就Exceptionless 5.0.0版本介绍一下快速地部署开发环境和生产环境,相信对有兴趣的朋友会有一点帮助。

  至此我也可以将我们之前的Exceptionless从Windows Server迁移到Linux上了!

02

快速本地Docker部署

安装Docker CE 18.09+

由于Exceptionless 5.0.0的一个前置要求是Docker版本(CE)在18.09及以上,因此我们需要安装一个18.09+的Docker CE版本到Linux服务器上,如果你之前安装了可以跳过此步骤,但如果版本小于18.09,那么请清理掉老版本升级到新版本,升级版本可以参考以下步骤。

  实验环境:阿里云ECS主机,CentOS 7.4

  (1)清理已有Docker老版本

  停止Docker老版本:

  卸载软件包:

  删除相关配置文件:

  (2)安装Docker 18.09+

  软件包安装:

  添加yum源:

  查看可安装的版本:目前最新版本已经是19.03

  安装指定版本:18.09

yum install docker-ce docker-ce-18.09.9-3.el7 -y

  启动Docker并设置开机自启动:

systemctl start docker
systemctl enable docker

  查看Docker版本:

  你可以看到已经是18.09版本了:

  

下载Release包

传送门:Exceptionless release

  

安装Exceptionless

(1)修改docker-compose.yml文件,设置外部访问地址/域名(适配你的服务器IP地址 或 域名+SSL证书,这里我直接修改为我的阿里云服务器的外网IP地址,参考我的注释)

version: '3.4' services:   api:    depends_on: - elasticsearch - redis build:  context: .  target: api image: exceptionless/api:latest restart: on-failure environment:    EX_AppMode: Production  EX_BaseURL: http://192.168.16.170:5100 #UI地址,修改这里的IP地址为你的服务器IP地址 EX_ConnectionStrings__Cache: provider=redis    EX_ConnectionStrings__Elasticsearch: server=http://elasticsearch:9200  #EX_ConnectionStrings__Email: smtps://user:password@smtp.host.com:587  EX_ConnectionStrings__MessageBus: provider=redis   #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;    EX_ConnectionStrings__Queue: provider=redis    EX_ConnectionStrings__Redis: server=redis,abortConnect=false  EX_ConnectionStrings__Storage: provider=folder;path=/app/storage  EX_RunJobsInProcess: 'false'  ports:  - 5000:80 # This can be commented out if using reverse proxy.   volumes:    - appdata:/app/storage  jobs:   depends_on: - api   build:  context: .  target: job image: exceptionless/job:latest restart: on-failure environment:    EX_AppMode: Production  EX_BaseURL: http://192.168.16.170:5100 #UI地址,修改这里的IP地址为你的服务器IP地址 EX_ConnectionStrings__Cache: provider=redis    EX_ConnectionStrings__Elasticsearch: server=http://elasticsearch:9200  #EX_ConnectionStrings__Email: smtps://user:password@smtp.host.com:587  EX_ConnectionStrings__MessageBus: provider=redis   #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;    EX_ConnectionStrings__Queue: provider=redis    EX_ConnectionStrings__Redis: server=redis,abortConnect=false  EX_ConnectionStrings__Storage: provider=folder;path=/app/storage  volumes:    - appdata:/app/storage  ui: image: exceptionless/ui:latest  environment:    AppMode: Production EX_ApiUrl: http://192.168.16.170:5000 #API地址,修改这里的IP地址为你的服务器IP地址 #EX_Html5Mode: 'false'    #EX_EnableSsl: 'false'    #EX_EnableAccountCreation: 'false'    ports:  - 5100:80 # This can be commented out if using reverse proxy.   #  reverseproxy:
#    depends_on:
#      - api
#      - ui
#    image: valian/docker-nginx-auto-ssl
#    restart: on-failure
#    ports:
#      - 80:80
#      - 443:443
#    volumes:
#      - ssldata:/etc/resty-auto-ssl
#    environment:
#      ALLOWED_DOMAINS: '(ex-ui|ex-api).mydomainn.com'
#      SITES: 'ex-ui.mydomainn.com=ui;ex-api.mydomainn.com=api' elasticsearch:  image: exceptionless/elasticsearch:1    restart: on-failure environment:    cluster.name: 'exceptionless' bootstrap.memory_lock: 'true' discovery.type: single-node ES_JAVA_OPTS: '-Xms512m -Xmx512m' xpack.security.enabled: 'false'   xpack.graph.enabled: 'false'  xpack.watcher.enabled: 'false'    ports:  - 9200:9200 - 9300:9300 ulimits:    memlock:    soft: -1    hard: -1    volumes:    - esdata:/usr/share/elasticsearch/data  kibana: depends_on: - elasticsearch image: exceptionless/kibana:1   restart: on-failure environment:    xpack.security.enabled: 'false'   ports:  - 5601:5601 redis:  image: redis:alpine restart: on-failure ports:  - 6379:6379 volumes:    esdata: driver: local   appdata:    driver: local   ssldata:    driver: local

Note:在这个docker-compose.yml中定义了Exceptionless的最小化运行环境,但官方建议生产环境使用ElasticSearch集群,并适当修改ElasticSearch的内存限制。如果你的量很小真的不大,那么这个最小化的运行环境也够用了,没必要为了高可用而高可用。 

  (2)将Release包上传到阿里云服务器,然后通过SSH执行一下shell命令(首先cd到这个release包的目录下)启动Exceptionless 5.0.0。

  整个过程会比较漫长,因为会经过34个Steps,拉取很多镜像,类似于Redis,ElasticSearch,Kibana及.NET Core SDK等等,请耐心等待。最终效果如下所示:

  

  

使用Exceptionless

(1)访问你的服务器IP:5100 即可访问Exceptionless Web管理登录界面,如果你能看到,那么代表部署成功了。注册一个账号,然后登陆吧。

  

  (2)可以看到主页是全新的中文管理界面,感谢贡献者的努力

  

  

  (3)创建一些示例项目,如“XDP.Product.API”,并获取API Key

  

  (4)在你的ASP.NET Core WebAPI项目中配置API Key,并向Exceptionless API(这里是5000端口)发送Log

  (5)在Exceptionless中查看Log

  

  

03

遗留问题:Email通知配置

使用过Exceptionless的童鞋都知道,Exceptionless提供了强大的Email通知机制,可以为用户提供及时的严重错误通知和每日报告。

  

  在上面介绍的安装基础上,根据官方Wiki文档,按理说我们只需要确保docker-compose.yml中的api和jobs的AppMode为Production模式并设置SMTP就可以开启Email通知。

EX_AppMode: Production
EX_ConnectionStrings__Email: smtp://edisonchou%40qq.com:zltqvl2321ed@smtp.qq.com:465

  这里的%40是@的转义替代,在Exceptionless中会使用Decode进行解码为@,原因好像是因为它是通过@符号分割前方的用户名+密码和后方的Host+Port,也是醉了。

  设置完成后,通过以下命令重启docker:

docker-compose up -d

  docker-compose会自动帮我们重启更改过的容器,比如api和jobs。

  但是,我试了很多次都发现还是无法正常发送Email通知,由于不影响使用,也就暂时没去深究了,有解决的朋友可以告知并分享一下解决办法,谢谢。

04

小结

本文介绍了Exceptionless 5.0.0的容器化本地部署,主要参考自Exceptionless的Self-Host文档。

参考资料:

1、Exceptionless release

2、Exceptionless Self-Hosting Documention

点个在看,和更多人一起分享!

Exceptionless 5.0.0本地Docker快速部署介绍相关推荐

  1. 私活利器,docker快速部署node.js应用

    http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...

  2. 【BI数据可视化】使用Docker快速部署Superset

    本地演示 快速部署Superset Docker快速部署 代码 docker pull apache/supersetdocker run -d -p 8080:8088 --name superse ...

  3. 当当elastic-job docker快速部署_[小Z课堂]-docker 快速部署 elasticsearch 和 kibana,一键部署...

    各位小伙伴,小Z课堂来袭,每天只需看三分钟,你就能用docker 快速部署各种环境.今天就用docker 来部署 elasticsearch 和 kibana.docker的入门请上度娘学习,这里直接 ...

  4. 使用Docker快速部署禅道V11.6版本

    使用Docker快速部署禅道V11.6版本 (一)部署禅道 docker run --name zentao_v11.5 -p 8084:80 -v /u01/zentao/www:/app/zent ...

  5. Docker快速部署PostgreSQL服务

    Docker快速部署PostgreSQL服务 快速开始 请新建一个目录postgresql,进入目录postgresql,将以下文件保存为docker-compose.yml,然后执行docker-c ...

  6. Docker快速部署Yearning

    Docker快速部署Yearning Yearning 准备 Docker安装Yearning 查看Yearning版本 拉取镜像 运行容器 Yearning使用 使用方法 创建数据库连接 创建权限组 ...

  7. windows部署微服务jar包 yml_杰克布开源项目,低代码开发框架,Docker快速部署

    代码托管:GitHub和Gitee,国内用户访问Gitee速度快. 系统环境:Win10,JDK8,maven,node,docker. 一,开源技术社区 1,JeecgBoot 基于代码生成器的低代 ...

  8. idea+docker 快速部署项目

    文章目录 1 介绍 2 修改配置文件 2.1 无需证书 2.2 生成证书 安全验证 3 idea安装Docker插件并配置 1 介绍 快速将idea代码通过docker部署到服务器,运行 服务器doc ...

  9. 运维人员的解放----Docker快速部署

    Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) Dock ...

最新文章

  1. mac下git与github简单使用
  2. 基于 KubeVela 的 GitOps 交付
  3. “甜橙金融杯”数据建模大赛发布,8万重金寻找大数据金融人才!
  4. 工业交换机安全性能的必要性
  5. SAP License:物料账差异
  6. Socket Tcp高密集信息广播转发强度测试
  7. svn 回退到指定版本无法提交_svn回滚到指定版本
  8. C++IO流文件指针
  9. 最新RiPro6.3.8 wordpress主题最新版完整修复去后门和加密文件
  10. 以昂扬的斗志,书写青春的热血
  11. java实现excel多级联动
  12. 使用c#建立奥运奖牌榜
  13. 京东双十一活动执行总结
  14. 阿里云 云盾 安骑士 监控ECS离线 安全组规则 ip设置
  15. GMS特征点代码实践
  16. 关于java过滤微信emoji表情的问题解决方法
  17. 如何选择学习linux
  18. 基于模糊神经网络PID算法的液位串级控制
  19. IMX6Q,fsl,mxc_sdc_fb显示屏驱动移植,板级文件到设备树
  20. 电脑如何同时登录多个微信?

热门文章

  1. 在VSCode Remote环境下开发Teams Bot
  2. Microsoft Teams:团队Owner离开公司后,我们该怎么做?
  3. PHP-FPM 与 Nginx 的通信机制总结
  4. 上周面试回来后写的Java面试总结,想进BAT必看
  5. 微信小程序 --- 页面跳转
  6. 「每天一道面试题」如何理解方法的重载与覆盖?
  7. Mac Ubuntu ----端口被占用
  8. 解析super-smack的smack文件
  9. 进入51cto之后的发展方向
  10. because it is not a variable 编译错误解决方案