Exceptionless 5.0.0本地Docker快速部署介绍
在之前我有專門寫兩篇文章介紹過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: localNote:在這個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 -ddocker-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快速部署介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Entity Framework Cor
- 下一篇: 定了!10 月 8 日!Jupyter
