北京企业建站,做网站600,重庆造价信息网官网首页,深圳软件开发工程师在之前我有专门写两篇文章介绍过Exceptionless这款开源日志项目的使用和部署#xff0c;但是当时是基于4.1.0版本#xff08;2017年的release#xff09;#xff0c;时隔两年多Exceptionless也推出了5.0.0版本。#xff08;1#xff09;#xff08;2#xff09;01—关于… 在之前我有专门写两篇文章介绍过Exceptionless这款开源日志项目的使用和部署但是当时是基于4.1.0版本2017年的release时隔两年多Exceptionless也推出了5.0.0版本。1201—关于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.09yum install docker-ce docker-ce-18.09.9-3.el7 -y 启动Docker并设置开机自启动systemctl start docker
systemctl enable docker 查看Docker版本 你可以看到已经是18.09版本了 下载Release包 传送门Exceptionless release 安装Exceptionless1修改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: providerredis EX_ConnectionStrings__Elasticsearch: serverhttp://elasticsearch:9200 #EX_ConnectionStrings__Email: smtps://user:passwordsmtp.host.com:587 EX_ConnectionStrings__MessageBus: providerredis #EX_ConnectionStrings__Metrics: providerstatsd;serverstatsd; EX_ConnectionStrings__Queue: providerredis EX_ConnectionStrings__Redis: serverredis,abortConnectfalse EX_ConnectionStrings__Storage: providerfolder;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: providerredis EX_ConnectionStrings__Elasticsearch: serverhttp://elasticsearch:9200 #EX_ConnectionStrings__Email: smtps://user:passwordsmtp.host.com:587 EX_ConnectionStrings__MessageBus: providerredis #EX_ConnectionStrings__Metrics: providerstatsd;serverstatsd; EX_ConnectionStrings__Queue: providerredis EX_ConnectionStrings__Redis: serverredis,abortConnectfalse EX_ConnectionStrings__Storage: providerfolder;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.comui;ex-api.mydomainn.comapi 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: localNote在这个docker-compose.yml中定义了Exceptionless的最小化运行环境但官方建议生产环境使用ElasticSearch集群并适当修改ElasticSearch的内存限制。如果你的量很小真的不大那么这个最小化的运行环境也够用了没必要为了高可用而高可用。 2将Release包上传到阿里云服务器然后通过SSH执行一下shell命令首先cd到这个release包的目录下启动Exceptionless 5.0.0。 整个过程会比较漫长因为会经过34个Steps拉取很多镜像类似于RedisElasticSearchKibana及.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:zltqvl2321edsmtp.qq.com:465 这里的%40是的转义替代在Exceptionless中会使用Decode进行解码为原因好像是因为它是通过符号分割前方的用户名密码和后方的HostPort也是醉了。 设置完成后通过以下命令重启dockerdocker-compose up -d docker-compose会自动帮我们重启更改过的容器比如api和jobs。 但是我试了很多次都发现还是无法正常发送Email通知由于不影响使用也就暂时没去深究了有解决的朋友可以告知并分享一下解决办法谢谢。04—小结本文介绍了Exceptionless 5.0.0的容器化本地部署主要参考自Exceptionless的Self-Host文档。参考资料1、Exceptionless release2、Exceptionless Self-Hosting Documention点个在看和更多人一起分享