Exceptionless 5.0.0本地Docker快速部署介绍
在之前我有专门写两篇文章介绍过Exceptionless这款开源日志项目的使用和部署,但是当时是基于4.1.0版本(2017年的release),时隔两年多Exceptionless也推出了5.0.0版本。
一、关于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上了!
二、快速本地部署步骤
2.1 安装Docker 18.09+
由于Exceptionless 5.0.0的一个前置要求是Docker版本(CE)在18.09及以上,因此我们需要安装一个18.09+的Docker CE版本到Linux服务器上,如果你之前安装了可以跳过此步骤,但如果版本小于18.09,那么请清理掉老版本升级到新版本,升级版本可以参考以下步骤。
实验环境:阿里云ECS主机,CentOS 7.4
(1)清理已有Docker老版本
停止Docker老版本:
systemctl stop docker
卸载软件包:
yum erase docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker-ce
删除相关配置文件:
find /etc/systemd -name '*docker*' -exec rm -f {} \; find /etc/systemd -name '*docker*' -exec rm -f {} \; find /lib/systemd -name '*docker*' -exec rm -f {} \; rm -rf /var/lib/docker #删除以前已有的镜像和容器,非必要,慎删 rm -rf /var/run/docker
(2)安装Docker 18.09+
软件包安装:
yum install -y yum-utils device-mapper-persistent-data lvm2
添加yum源:
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
查看可安装的版本:目前最新版本已经是19.03
yum list docker-ce --showduplicates | sort -r
安装指定版本:18.09
yum install docker-ce docker-ce-18.09.9-3.el7 -y
启动Docker并设置开机自启动:
systemctl start docker systemctl enable docker
查看Docker版本:
docker version
你可以看到已经是18.09版本了:
2.2 下载Exceptionless 5.0.0 Release包
2.3 安装Exceptionless 5.0.0
(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。
docker-compose up -d
整个过程会比较漫长,因为会经过34个Steps,拉取很多镜像,类似于Redis,ElasticSearch,Kibana及.NET Core SDK等等,请耐心等待。最终效果如下所示:
2.4 使用Exceptionless 5.0.0
(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
三、遗留问题:Email通知配置
使用过Exceptionless的童鞋都知道,Exceptionless提供了强大的Email通知机制,可以为用户提供及时的严重错误通知和每日报告。
在上面介绍的安装基础上,根据官方Wiki文档,按理说我们只需要确保docker-compose.yml中的api和jobs的AppMode为Production模式并设置SMTP就可以开启Email通知。
EX_AppMode: Production EX_ConnectionStrings__Email: smtp://edisonchou7%40qq.com:zltqvl2321ed@smtp.qq.com:465
这里的%40是@的转义替代,在Exceptionless中会使用Decode进行解码为@,原因好像是因为它是通过@符号分割前方的用户名+密码和后方的Host+Port,也是醉了。
设置完成后,通过以下命令重启docker:
docker-compose up -d
docker-compose会自动帮我们重启更改过的容器,比如api和jobs。
但是,我试了很多次都发现还是无法正常发送Email通知,由于不影响使用,也就暂时没去深究了,有解决的朋友可以告知并分享一下解决办法,谢谢。
四、小结
本文介绍了Exceptionless 5.0.0的容器化本地部署,主要参考自Exceptionless的Self-Host文档。
参考资料
1、Exceptionless release
2、Exceptionless Self-Hosting Documention
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《容器上云的攻与守》-云栖演讲实录
今天上午王坚博士讲了一句话我比较有感触,大家做系统的时候,一定要想下你的系统的数据是怎么流转,这些系统的数据是怎么形成闭环。我们在设计阿里云的K8S容器服务ACK的时候也是融入了这些思考。首先是跟大家先看一下整个容器上云的解决方案。首先因为你已经做过容器,所以当你容器上云的时候,实际上这个事情是非常简单的,我们只需要提供的相应的工具,帮助大家把容器镜像迁入阿里云同时通过工具把K8S的配置迁到阿里云,以及可以用DTS工具把数据库迁入到阿里云。这样我们就可以完成一个完整的容器化上云的过程。所以这个过程其实非常简单,但是上完云之后,不是说我们原来的K8S原来怎么玩我们现在还是怎么玩。我们希望大家从上云的过程中有些收益,所以我们希望提供一些更高效敏捷的一些方式给到大家,包括怎么去做DevOps,包括我们怎么去做安全的软件供应链,以及我们做
- 下一篇
Docker安装Gitlab和Gitlab-Runner并实现项目的CICD
本文详细介绍如何在Linux系统使用Docker安装Gitlab、Gitlab-Runner并实现项目的CICD 一、安装Gitlab 1、拉取镜像并启动 由于服务器的80端口可能被占用,所以这里我们改成了其他端口来启动 docker run -d -p 2443:443 -p 5678:80 -p 2222:22 --name gitlab --restart always -v/srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /src/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce 2、修改配置文件 修改gitlab.yml文件 vim /src/gitlab/data/gitlab-rai
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度