当前位置:   article > 正文

Exceptionless 5.0.0本地Docker快速部署介绍

docker 装 exceptionless

640?wx_fmt=gif

在之前我有专门写两篇文章介绍过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并设置开机自启动:

  1. systemctl start docker
  2. systemctl enable docker

  查看Docker版本:

 
    

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

  640?wx_fmt=png

下载Release包

        传送门:Exceptionless release

   640?wx_fmt=png

安装Exceptionless

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

  1. version: '3.4'
  2. services:
  3. api:
  4. depends_on:
  5. - elasticsearch
  6. - redis
  7. build:
  8. context: .
  9. target: api
  10. image: exceptionless/api:latest
  11. restart: on-failure
  12. environment:
  13. EX_AppMode: Production
  14. EX_BaseURL: http://192.168.16.170:5100 #UI地址,修改这里的IP地址为你的服务器IP地址
  15. EX_ConnectionStrings__Cache: provider=redis
  16. EX_ConnectionStrings__Elasticsearch: server=http://elasticsearch:9200
  17. #EX_ConnectionStrings__Email: smtps://user:password@smtp.host.com:587
  18. EX_ConnectionStrings__MessageBus: provider=redis
  19. #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;
  20. EX_ConnectionStrings__Queue: provider=redis
  21. EX_ConnectionStrings__Redis: server=redis,abortConnect=false
  22. EX_ConnectionStrings__Storage: provider=folder;path=/app/storage
  23. EX_RunJobsInProcess: 'false'
  24. ports:
  25. - 5000:80 # This can be commented out if using reverse proxy.
  26. volumes:
  27. - appdata:/app/storage
  28. jobs:
  29. depends_on:
  30. - api
  31. build:
  32. context: .
  33. target: job
  34. image: exceptionless/job:latest
  35. restart: on-failure
  36. environment:
  37. EX_AppMode: Production
  38. EX_BaseURL: http://192.168.16.170:5100 #UI地址,修改这里的IP地址为你的服务器IP地址
  39. EX_ConnectionStrings__Cache: provider=redis
  40. EX_ConnectionStrings__Elasticsearch: server=http://elasticsearch:9200
  41. #EX_ConnectionStrings__Email: smtps://user:password@smtp.host.com:587
  42. EX_ConnectionStrings__MessageBus: provider=redis
  43. #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;
  44. EX_ConnectionStrings__Queue: provider=redis
  45. EX_ConnectionStrings__Redis: server=redis,abortConnect=false
  46. EX_ConnectionStrings__Storage: provider=folder;path=/app/storage
  47. volumes:
  48. - appdata:/app/storage
  49. ui:
  50. image: exceptionless/ui:latest
  51. environment:
  52. AppMode: Production
  53. EX_ApiUrl: http://192.168.16.170:5000 #API地址,修改这里的IP地址为你的服务器IP地址
  54. #EX_Html5Mode: 'false'
  55. #EX_EnableSsl: 'false'
  56. #EX_EnableAccountCreation: 'false'
  57. ports:
  58. - 5100:80 # This can be commented out if using reverse proxy.
  59. # reverseproxy:
  60. # depends_on:
  61. # - api
  62. # - ui
  63. # image: valian/docker-nginx-auto-ssl
  64. # restart: on-failure
  65. # ports:
  66. # - 80:80
  67. # - 443:443
  68. # volumes:
  69. # - ssldata:/etc/resty-auto-ssl
  70. # environment:
  71. # ALLOWED_DOMAINS: '(ex-ui|ex-api).mydomainn.com'
  72. # SITES: 'ex-ui.mydomainn.com=ui;ex-api.mydomainn.com=api'
  73. elasticsearch:
  74. image: exceptionless/elasticsearch:1
  75. restart: on-failure
  76. environment:
  77. cluster.name: 'exceptionless'
  78. bootstrap.memory_lock: 'true'
  79. discovery.type: single-node
  80. ES_JAVA_OPTS: '-Xms512m -Xmx512m'
  81. xpack.security.enabled: 'false'
  82. xpack.graph.enabled: 'false'
  83. xpack.watcher.enabled: 'false'
  84. ports:
  85. - 9200:9200
  86. - 9300:9300
  87. ulimits:
  88. memlock:
  89. soft: -1
  90. hard: -1
  91. volumes:
  92. - esdata:/usr/share/elasticsearch/data
  93. kibana:
  94. depends_on:
  95. - elasticsearch
  96. image: exceptionless/kibana:1
  97. restart: on-failure
  98. environment:
  99. xpack.security.enabled: 'false'
  100. ports:
  101. - 5601:5601
  102. redis:
  103. image: redis:alpine
  104. restart: on-failure
  105. ports:
  106. - 6379:6379
  107. volumes:
  108. esdata:
  109. driver: local
  110. appdata:
  111. driver: local
  112. ssldata:
  113. 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等等,请耐心等待。最终效果如下所示:

  640?wx_fmt=png

  640?wx_fmt=png

使用Exceptionless

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

  640?wx_fmt=png

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

  640?wx_fmt=png

  640?wx_fmt=png

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

  640?wx_fmt=png

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

  (5)在Exceptionless中查看Log

  640?wx_fmt=png

  640?wx_fmt=png

03

遗留问题:Email通知配置

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

  640?wx_fmt=png

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

  1. EX_AppMode: Production
  2. EX_ConnectionStrings__Emailsmtp://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

640?wx_fmt=jpeg

640?wx_fmt=jpeg


640?wx_fmt=png
点个 在看,和更多人一起分享!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/867144
推荐阅读
相关标签
  

闽ICP备14008679号