一、简介

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)的更多相关文章

  1. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...

  2. ASP.NET Core系列(二):创建第一个.Net Core 项目

    前面讲过 .NET Core简介及开发环境安装,本章会讲一讲ASP.NET Core 2.0的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zh ...

  3. asp.net core系列 76 Apollo 快速安装模式下填坑和ASP.NetCore结合使用

    前言:由于公司占时没有运维,出于微服务的需要,Apollo只能先装在windows 阿里云上跑起来,由于环境及网络等问题,在安装过程中遇到很多坑,算是一个个坑填完后,最终实现. 一. java jdk ...

  4. asp.net core系列 30 EF管理数据库架构--必备知识 迁移

    一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为 ...

  5. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  6. ASP.NET CORE系列【六】Entity Framework Core 之数据迁移

    原文:ASP.NET CORE系列[六]Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framew ...

  7. 【目录】asp.net core系列篇

    随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫&q ...

  8. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  9. ASP.NET Core 共享第三方依赖库部署的正常打开方式

    曾经: 写了一篇: ASP.Net Core on Linux (CentOS7) 共享第三方依赖库部署 当第二次想做相同的事,却遇上了Bug,于是有了第二篇: ASP.NET Core 共享第三方依 ...

  10. 1.1专题介绍「深入浅出ASP.NET Core系列」

    大家好,我是IT人张飞洪,专注于.NET平台十年有余. 工作之余喜欢阅读和写作,学习的内容包括数据结构/算法.网络技术.Linux系统原理.数据库技术原理,设计模式.前沿架构.微服务.容器技术等等…… ...

随机推荐

  1. Tarjan强连通分量详解

    1.简介: 在阅读下列内容之前,请务必了解 图论相关概念 中的基础部分. 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通. 强连通分量(Strongly Connected Compo ...

  2. 手把手教你在项目中引入Excel报表组件

    摘要:本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 GrapeCity Documents for Excel(以下 ...

  3. 用xshell连接vmware虚拟机

    主要是为了方便写命令,我的vmware不管怎样都没办法粘贴命令,写建表sql更是折磨. 开启虚拟机用ifconfig查看内网ip地址. 然后在用户身份验证填用户名和密码. 连接成功. 这样就可以开多个 ...

  4. 详解GuassDB数据库权限命令:GRANT和REVOKE

    本文分享自华为云社区<GuassDB数据库的GRANT & REVOKE>,作者: Gauss松鼠会小助手2 . 一.GaussDB的权限概述 在数据库中,对象的创建者将成为该对象 ...

  5. VM虚拟机在添加虚拟硬盘后无法boot的解决方案

    今天本想自己配一个mini Linux系统,但是在给系统增加一块硬盘的时候,发现出现以下问题 CentOS打不开(其实经过很久也能进去,但是指令全部失效) 由于不知道原因最后就重装了系统,奇怪的是,重 ...

  6. 在centos7上使用 docker安装mongodb挂载宿主机以及创建其数据库的用户名和密码(最新版本)

    前言 因为博主在使用docker安装mongodb并挂载时,发现在网上搜了好多都是以前版本的mongodb,并且按照他们操作总是在进入mongodb出问题,博主搞了好久终于弄好了,故写下博客,供有需要 ...

  7. AndroGenshin

    是一个apk文件 jadx打开以后发现主要操作 找到mainactivity,研究代码可以知道主要操作就是对两个字符串进行RC4加密再进行一次换表的base64操作,最后再将加密后的结果与flag做对 ...

  8. .NET6中的await原理浅析

    前言 看过不少关于 await 的原理的文章,也知道背后是编译器给转成了状态机实现的,但是具体是怎么完成的,回调又是如何衔接的,一直都没有搞清楚,这次下定决心把源码自己跑了下,终于豁然开朗了 本文的演 ...

  9. EF Core预编译模型Compiled Model

    前言 最近还在和 npgsql 与 EF Core 斗争,由于 EF Core 暂时还不支持 AOT,因此在 AOT 应用程序中使用 EF Core 时,会提示问题: 听这个意思,似乎使用 Compi ...

  10. OpenAI宫斗反转反转再反转,到底是资本任性还是人性扭曲?

    最近OpenAI发生了一件大事,创始人山姆·奥特曼被董事会开除了,这在AI界引起了轩然大波. 事件经过 我们先来捋一下事件经过,时间以美国旧金山当地时间为准. 11月17日 11月17日12点(北京时 ...