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系统原理.数据库技术原理,设计模式.前沿架构.微服务.容器技术等等…… ...
随机推荐
- How to install Django¶
This document will get you up and running with Django. Install Python Being a Python Web framework, ...
- Background Removal obs
Background Removal / Portrait Segmentation / Virtual Green-screen v0.5.16 Go to download Author roys ...
- 在 Rust 中 gRPC 使用的 protobuf 实现条件编译服务器和客户端(tonic)
前言 Rust 中 gRPC 最优秀的库是 tonic.tonic-build 的默认生成方式是生成一个带有数据类型和客户端与服务端源码,而对于分层应用,客户端尽可能不要知道服务端的代码,同时服务端也 ...
- 实战0-1,Java开发者也能看懂的大模型应用开发实践!!!
前言 在前几天的文章<续写AI技术新篇,融汇工程化实践>中,我分享说在RAG领域,很多都是工程上的实践,做AI大模型应用的开发其实Java也能写,那么本文就一个Java开发者的立场,构建实 ...
- 使用LiME收集主机物理内存的内容时发生宕机
作者 pengdonglin137@163.com 现象 在一台ARM64的Centos7虚拟机里加载 https://github.com/504ensicsLabs/LiME 编译出的内核模块时发 ...
- PTA乙级1099
#include"bits/stdc++.h" using namespace std; int prime(int x) { if(x<2) return 0; for(i ...
- 7z 一键压缩备份
该批处理已开源 开原地址: 点击进入 磁盘备份 工具有很多,如果你需要增量式备份的话,以下这些方法并不适合你.goodsync 可以了解一下. 以下方式仅适用于,懒人一键压缩备份. 对于我来说 定期的 ...
- 《流畅的Python》 读书笔记 第8章_对象引用、可变性和垃圾回收
第8章_对象引用.可变性和垃圾回收 本章的主题是对象与对象名称之间的区别.名称不是对象,而是单独的东西 name = 'wuxianfeng' # name是对象名称 'wuxianfeng'是个st ...
- 【NOI2014】 魔法森林---解题报告
传送门 题目大意 给定 \(n\) 个点和 \(m\) 条边.每条边包含起点终点和两个精灵的最低限制,求最少需要携带的精灵数量. 题目解析 直接套 LCT 板子 将所有边按照进行升序排序,从小到大将边 ...
- 1. 手动移植FreeRTOS V9.00到 Stm32F103C8T6
记录移植过程,以便以后查看: 附上FreeRTOS源码和 测试文件: 链接:https://pan.baidu.com/s/1v6nvDOk4-2NILYqN3njGjQ 提取码:1234 1.使用 ...