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系统原理.数据库技术原理,设计模式.前沿架构.微服务.容器技术等等…… ...
随机推荐
- Pricing
Skip to main content Site Navigation Research Product Developers Safety Company Search Pricing Sim ...
- docker入门加实战—docker数据卷
docker入门加实战-docker数据卷 容器是隔离环境,容器内程序的文件.配置等都在容器的内部,要读写容器内的文件非常不方便. 因此,容器提供程序的运行环境,但是程序运行产生的数据.程序运行依赖的 ...
- 13. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP中的压缩gzip,deflate,brotli算法
用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP中的压缩gzip,deflate,brotli算法 项目 ++wmproxy++ gite: https://gitee.com/ ...
- .NET6发布项目到腾讯云Windows2012R全网最详细教程
注意:本次使用腾讯云作为本次的演示 1.创建服务器及连接 1.1 请先在腾讯云.阿里云等创建实例 1.2 打开远程连接工具输入在腾讯云获取的公网iP输入计算机 1.3 根据图片点击连接 1.4 输入服 ...
- HarmonyOS原生分析能力,即开即用助力精细化运营
数据分析产品对开发者的价值呈现在两个层面,第一个是产品的层面,可以通过数据去洞察用户的行为,从而找到产品的优化点.另外一个就是运营层面,可以基于数据去驱动,来实现私域和公域的精细化运营. 在鸿蒙生态上 ...
- 【数字图像处理】Matlab实现-图像增强-灰度图像增强
灰度图像增强的大致原理以及操作方法 面向作业编程 上图是大概对灰度图的增强处理 就是想让图片变得更好看 那么如何具体操作就看下面的代码了 这是一个简单的线性分段处理,相信在注释的帮助下应该能看懂. % ...
- Golang面试题从浅入深高频必刷「2023版」
大家好,我是阳哥.专注Go语言的学习经验分享和就业辅导. Go语言特点 Go语言相比C++/Java等语言是优雅且简洁的,是我最喜爱的编程语言之一,它既保留了C++的高性能,又可以像Java,Pyth ...
- go 中的循环依赖
什么是循环依赖 Go 中的循环依赖是指两个或多个包之间相互引用,形成了一个循环依赖关系.这种情况下,包 A 依赖包 B,同时包 B 也依赖包 A,导致两个包之间无法明确地确定编译顺序,从而可能引发编译 ...
- L2-032 彩虹瓶
#include <bits/stdc++.h> using namespace std; const int N = 1010; int main() { ios::sync_with_ ...
- super学习
2022-10-02 16:27:38 super super代表的是"当前对象(this)"的父类型特征 概念 1.super是一个关键字,全部小写. 2.super和this对 ...