Asp .Net Core系列:Exceptionless简介和部署(Windows、Linux、Docker)
一、简介
Exceptionless为您提供了跟踪错误、日志和事件的工具,同时指导您找到可行的解决方案。首先,您需要决定是自托管Exceptionless还是使用我们的托管版本。如果您选择使用我们的托管版本,您可以免费开始使用。
官网地址:https://exceptionless.com/
Github地址:https://github.com/exceptionless
Exceptionless 项目:https://github.com/exceptionless/Exceptionless (内置UI)

Exceptionless.UI项目(已过期):
Warning 存储库已存档,不再进行维护。所有源代码和问题都已移动到https://github.com/exceptionless/Exceptionless.请使用新的存储库进行任何未来的查询或贡献
二、版本
采用官网最新的版本
Exceptionless:v8.0.4
Exceptionless.UI:v3.1.12(已过期)
Elasticsearch:v8.8.1
三、运行说明
1、Exceptionless
这是一个API项目,包含所有的API,环境采用.NET 7.0,服务器必须安装.NET 7.0运行环境
2、Elasticsearch
存储相关数据,内置jdk,推荐按照DockerCompose指定的版本,
3、Exceptionless.UI
查看异常、设置新异常邮件通知等操作的后台,采用angular写的,v3.1.12必须采用的 Node 10.24.*,以及安装Python环境,如果采用内置的ClientApp则采用Node 18+,无需Python环境
四、打包Exceptionless.UI
v3.1.12(已过期)
npm install
npx bower install
npx grunt build
ClientApp在发布Exceptionless.Web的时候会执行打包
npm install # 添加依赖
npm run build # 打包
npm run serve
单独部署
需要指定
BASE_URL,也就是API请求地址,默认是window.location.origin,也可以通过打包后去修改app.config.911ab0f5f056fec6.js文件
USE_HTML5_MODE:是否采用H5模式,也就是默认Hash模式,后面有#号,而邮件发过来的url会类似http://localhost:5100/type/error/frequent,导致不能访问,所以constant('USE_HTML5_MODE', false) 修改该值为true

五、window部署
1. Elasticsearch
部署请网上自行查询,如果是开启外网访问,建议开启xpath
8.0版本以上,默认是https,需要关闭 xpack.security.enabled: false ,如果需要开启xpath验证,需要生成证书,否则无法访问
配置文件elasticsearch.yml
xpack.security.enabled: false
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
cluster.name: es-master-node
node.name: es-master-node
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["es-master-node"]
Elasticsearch默认最小内存是4G,如需修改请修改jvm.options
## -Xms4g
## -Xmx4g
安装mapper-size
https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-size.html
elasticsearch-plugin.bat install mapper-size
查看运行信息

2.Exceptionless
下载.NET 7.0运行时
https://dotnet.microsoft.com/zh-cn/download/dotnet/7.0
编译项目

选择 Exceptionless.Web 发布

在 Exceptionless.Web.csproj 配置了发布前执行的命令,会打包前端项目
<Target Name="PublishRunWebBuild" AfterTargets="ComputeFilesToPublish" Condition="'$(SkipSpaPublish)' != 'true'">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec WorkingDirectory="$(SpaRoot)" Command="npm ci" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="$(SpaRoot)dist\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>wwwroot\%(RecursiveDir)%(FileName)%(Extension)</RelativePath>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
会将 ClientApp 打包到wwwroot的目录下

运行
dotnet Exceptionless.Web.dll --urls=http://localhost:9000
配置文件
---
ConnectionStrings:
# Redis: server="localhost,abortConnect=false"
Elasticsearch: server=http://localhost:9200
# Cache: provider=redis;
# MessageBus: provider=redis;
# Queue: provider=redis;
Storage: provider=folder;path=.\storage
# LDAP: ''
# Email: smtp://localhost:1025
# Base url for the ui used to build links in emails and other places.
BaseURL: 'http://localhost:9001/#!'
# Wether or not to run the jobs in process. Requires Redis to be configured when running jobs out of process.
RunJobsInProcess: true
#AppScope: dev
#EnableAccountCreation: false
#DisableIndexConfiguration: false
#AllowedOutboundAddresses: "exceptionless"
Serilog:
MinimumLevel:
Default: Debug
Apm:
#Endpoint: http://localhost:4317
Insecure: true
#SslThumbprint: CB16E1B3DFE42DF751F93A8575942DA89E10BC98
EnableLogs: false
EnableTracing: false
EnableMetrics: true
FullDetails: true
Debug: false
Console: false
每一个配置项具体可查看AppOptions类
首Exceptionless.Web项目加载配置文件,是根据系统环境变量来加载不同的配置文件的(如果不知道是什么搜一下windows系统环境变量,其他系统自行百度)
如果系统环境变量中存在 EX_AppMode 的话,比如 EX_AppMode=Staging则加载 appsettings.Staging.yml 文件。(EX_AppMode如果不存在则为 Production)
public static IHostBuilder CreateHostBuilder(string[] args)
{
string environment = Environment.GetEnvironmentVariable("EX_AppMode");
if (String.IsNullOrWhiteSpace(environment))
environment = "Production";
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddYamlFile("appsettings.yml", optional: true, reloadOnChange: true)
.AddYamlFile($"appsettings.{environment}.yml", optional: true, reloadOnChange: true)
.AddEnvironmentVariables("EX_")
.AddEnvironmentVariables("ASPNETCORE_")
.AddCommandLine(args)
.Build();
}
效果图

六、Docker部署
我们可以看到它在docker-compose里面的服务
version: "2.2"
services:
elasticsearch:
image: exceptionless/elasticsearch:8.9.0
environment:
node.name: elasticsearch
cluster.name: exceptionless
discovery.type: single-node
xpack.security.enabled: "false"
action.destructive_requires_name: false
ES_JAVA_OPTS: -Xms1g -Xmx1g
ports:
- 9200:9200
volumes:
- esdata:/usr/share/elasticsearch/data
kibana:
depends_on:
- elasticsearch
image: docker.elastic.co/kibana/kibana:8.9.0
environment:
xpack.security.enabled: "false"
ports:
- 5601:5601
redis:
image: redis:6-alpine
ports:
- 6379:6379
mail:
image: mailhog/mailhog:latest
ports:
- 8025:8025
- 1025:1025
volumes:
esdata:
driver: local
Asp .Net Core系列:Exceptionless简介和部署(Windows、Linux、Docker)的更多相关文章
- 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...
- ASP.NET Core系列(二):创建第一个.Net Core 项目
前面讲过 .NET Core简介及开发环境安装,本章会讲一讲ASP.NET Core 2.0的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zh ...
- asp.net core系列 76 Apollo 快速安装模式下填坑和ASP.NetCore结合使用
前言:由于公司占时没有运维,出于微服务的需要,Apollo只能先装在windows 阿里云上跑起来,由于环境及网络等问题,在安装过程中遇到很多坑,算是一个个坑填完后,最终实现. 一. java jdk ...
- asp.net core系列 30 EF管理数据库架构--必备知识 迁移
一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为 ...
- asp.net core 系列 18 web服务器实现
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...
- ASP.NET CORE系列【六】Entity Framework Core 之数据迁移
原文:ASP.NET CORE系列[六]Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framew ...
- 【目录】asp.net core系列篇
随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫&q ...
- [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问
前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...
- ASP.NET Core 共享第三方依赖库部署的正常打开方式
曾经: 写了一篇: ASP.Net Core on Linux (CentOS7) 共享第三方依赖库部署 当第二次想做相同的事,却遇上了Bug,于是有了第二篇: ASP.NET Core 共享第三方依 ...
- 1.1专题介绍「深入浅出ASP.NET Core系列」
大家好,我是IT人张飞洪,专注于.NET平台十年有余. 工作之余喜欢阅读和写作,学习的内容包括数据结构/算法.网络技术.Linux系统原理.数据库技术原理,设计模式.前沿架构.微服务.容器技术等等…… ...
随机推荐
- python setup.py sdist bdist_wheel
# python setup.py sdist bdist_wheel# twine upload dist/*import ioimport osimport sysfrom shutil impo ...
- qq群匿名聊怎么用
qq群匿名聊怎么用 1 2 3 4 5 分步阅读 匿名的意思就是不认识.群匿名聊当然是把群里的马甲一下变成不认识的人,再在一起聊天.是不是觉得有点吃饱了没事干,但是当下该功能还是比较实用的,群匿名聊可 ...
- Cloud Bursting解决方案,Serverless容器降本增效极致体验
本文分享自华为云社区<DTSE Tech Talk | 第42期:Cloud Bursting解决方案,Serverless容器降本增效极致体验>,作者:华为云社区精选. 线下IDC自建K ...
- 13. 从零开始编写一个类nginx工具, HTTP中的压缩gzip,deflate,brotli算法
wmproxy wmproxy将用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,后续将实现websocket代理, 内外网穿透等, 会将实现过程分享出来, 感 ...
- 广义 SAM 学习笔记
开 CF 开到了一道广义 SAM,决定来学一学. 发现网上确实充斥着各种各样的伪广义 SAM,也看到了前人反复修改假板子的过程,所以试着来整理一下这堆奇奇怪怪的问题. 当然本文的代码也不保证百分百正确 ...
- 2023 SHCTF-校外赛道 Crypto—Wp
WEEK1 立正 wl hgrfhg 4gNUx4NgQgEUb4NC64NHxZLg636V6CDBiDNUHw8HkapH :jdoi vl vlkw ~xrb wd nrrT Y: 凯撒解密,偏 ...
- 打造美团外卖新体验,HarmonyOS SDK持续赋能开发者共赢鸿蒙生态
从今年8月起,所有升级到HarmonyOS 4的手机用户在美团外卖下单后,可通过屏幕上的一个"小窗口",随时追踪到"出餐.取餐.送达"等订单状态.这个能让用户实 ...
- 优雅设计之美:实现Vue应用程序的时尚布局
前言 页面布局是减少代码重复和创建可维护且具有专业外观的应用程序的基本模式.如果使用的是Nuxt,则可以提供开箱即用的优雅解决方案.然而,令人遗憾的是,在Vue中,这些问题并未得到官方文档的解决. 经 ...
- 一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)
我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库.对于专业的Python开发者来说,可以直接通过pip命令进行安装即可.但是如果是分 ...
- 黑客玩具入门——4、漏洞扫描与Metasploit
1.Legion漏洞扫描分析工具 Legion是Sparta的一个分支,它是一个开源的.易于使用的.超级可扩展的.半自动的网络渗透测试框架.它是一款Kali Linux系统默认集成的Python GU ...