当前位置: 首页 > news >正文

没有建设的网站不能申请微信支付吗wordpress 内存

没有建设的网站不能申请微信支付吗,wordpress 内存,邳州网站,二级域名网站免费建站🚀 ABP vNext Sentry ELK Stack:打造高可用异常跟踪与日志可视化平台 🎉 📚 目录 🚀 ABP vNext Sentry ELK Stack:打造高可用异常跟踪与日志可视化平台 🎉技术选型系统架构图依赖安装与多环…

🚀 ABP vNext + Sentry + ELK Stack:打造高可用异常跟踪与日志可视化平台 🎉


📚 目录

  • 🚀 ABP vNext + Sentry + ELK Stack:打造高可用异常跟踪与日志可视化平台 🎉
    • 技术选型
    • 系统架构图
    • 依赖安装与多环境配置 🧰
    • 安全日志配置 🔐
      • appsettings.Development.json
      • appsettings.Production.json
      • Elasticsearch 索引模板 📑
    • 程序启动与 DI 注册 ⚙️
    • 日志增强与异常捕获 🛡️
      • 自定义 TenantLogEnricher
      • 全局异常订阅器
    • APM 事务监控示例 🔍
    • HealthChecks 与 UI 🩺
    • 日志生命周期管理 (ILM) 🔄
    • 容器化部署示例 🐳
    • Kubernetes 部署示例 ☸️


技术选型

🛠️ 工具功能适用场景
ABP vNext模块化应用框架多租户、多模块
Serilog.NET 结构化日志库支持多种 Sink
Sentry异常与性能链路监控异常聚合、Trace 分析
Elasticsearch日志索引引擎大规模写入与检索
Kibana日志可视化面板仪表盘和图表展示
HealthChecks UI可视化健康检查服务可用性与探针监控

系统架构图

写日志
写入
上报
捕获
探针
ABP vNext App
Serilog Logging
Elasticsearch Sink
Elasticsearch
Kibana Dashboard
Sentry SDK
Sentry Dashboard
IExceptionSubscriber
HealthChecks UI

依赖安装与多环境配置 🧰

dotnet add package Sentry.AspNetCore
dotnet add package Serilog.Sinks.Elasticsearch
dotnet add package Serilog.Enrichers.Environment
dotnet add package Serilog.Enrichers.Thread
dotnet add package Serilog.Enrichers.CorrelationId
dotnet add package Volo.Abp.Serilog
dotnet add package AspNetCore.HealthChecks.UI
// Program.cs - 配置读取顺序
var builder = WebApplication.CreateBuilder(args);builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true).AddEnvironmentVariables();

安全日志配置 🔐

appsettings.Development.json

{"Sentry": {"Dsn": "${SENTRY_DSN}","TracesSampleRate": 1.0,"Debug": true},"Serilog": {"MinimumLevel": { "Default": "Debug" },"WriteTo": [ { "Name": "Console" } ]}
}

appsettings.Production.json

{"Sentry": {"Dsn": "${SENTRY_DSN}","TracesSampleRate": 0.2,"SendDefaultPii": true,"AttachStacktrace": true,"Debug": false,"DiagnosticsLevel": "Error"},"Serilog": {"Using": [ "Serilog.Sinks.Elasticsearch" ],"MinimumLevel": {"Default": "Information","Override": { "Microsoft": "Warning" }},"WriteTo": [{"Name": "Elasticsearch","Args": {"NodeUris": "http://elasticsearch:9200","AutoRegisterTemplate": true,"AutoRegisterTemplateVersion": "ESv7","IndexFormat": "abp-logs-{0:yyyy.MM.dd}"}}],"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]}
}

秘钥注入
.NET 默认支持用环境变量 SENTRY__DSN(双下划线表示冒号)覆盖 Sentry:Dsn

export SENTRY__DSN=https://xxxx@sentry.io/project

Elasticsearch 索引模板 📑

curl -X PUT "localhost:9200/_template/abp-logs-template" -H "Content-Type: application/json" -d '
{"index_patterns": ["abp-logs-*"],"settings": { "number_of_shards": 3 },"mappings": {"properties": {"TenantId":  { "type": "keyword" },"Module":    { "type": "keyword" },"Timestamp": { "type": "date" },"Level":     { "type": "keyword" },"Message":   { "type": "text" }}}
}'

程序启动与 DI 注册 ⚙️

var builder = WebApplication.CreateBuilder(args);// 1. CorrelationId 中间件
builder.Services.AddCorrelationId();// 2. Sentry SDK
builder.Services.AddSentry(o =>
{o.Dsn = builder.Configuration["Sentry:Dsn"];o.TracesSampleRate = 0.2;o.AttachStacktrace = true;o.Debug = false;
});// 3. Serilog 注册
builder.Host.UseSerilog((ctx, lc) =>
{lc.ReadFrom.Configuration(ctx.Configuration).Enrich.WithCorrelationId().Enrich.WithMachineName().Enrich.WithEnvironmentUserName().Enrich.WithProcessId().Enrich.With<TenantLogEnricher>();
});// 4. 全局异常订阅
builder.Services.AddSingleton<IExceptionSubscriber, GlobalExceptionSubscriber>();// 5. HealthChecks + UI
builder.Services.AddHealthChecks().AddSqlServer(builder.Configuration.GetConnectionString("Default"), name: "SQL").AddRedis(builder.Configuration["Redis:Configuration"], name: "Redis").AddHealthChecksUI().AddSqlServerStorage(builder.Configuration.GetConnectionString("HealthChecksUI:Storage"));var app = builder.Build();// 6. 中间件顺序
app.UseCorrelationId();
app.UseSerilogRequestLogging();
app.UseSentryTracing();
app.UseRouting();app.UseEndpoints(endpoints =>
{endpoints.MapHealthChecks("/health", new HealthCheckOptions{ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse});endpoints.MapHealthChecksUI(options => { options.UIPath = "/health-ui"; });endpoints.MapControllers();
});app.Run();

日志增强与异常捕获 🛡️

自定义 TenantLogEnricher

public class TenantLogEnricher : ILogEventEnricher
{public void Enrich(LogEvent logEvent, ILogEventPropertyFactory factory){var tenantId    = CurrentTenant.Id?.ToString() ?? "host";var moduleName  = Assembly.GetEntryAssembly()?.GetName().Name ?? "unknown";logEvent.AddPropertyIfAbsent(factory.CreateProperty("TenantId", tenantId));logEvent.AddPropertyIfAbsent(factory.CreateProperty("Module", moduleName));}
}

全局异常订阅器

public class GlobalExceptionSubscriber : IExceptionSubscriber
{private readonly ILogger<GlobalExceptionSubscriber> _logger;public GlobalExceptionSubscriber(ILogger<GlobalExceptionSubscriber> logger)=> _logger = logger;public Task HandleAsync(ExceptionNotificationContext context){// 业务异常也记录,级别 Warning_logger.LogWarning(context.Exception, "业务异常:{Message}", context.Exception.Message);// 全部异常上报到 SentrySentrySdk.CaptureException(context.Exception);return Task.CompletedTask;}
}

APM 事务监控示例 🔍

using var tx = SentrySdk.StartTransaction("OrderProcess", "order.process");
try
{// … 业务逻辑 …tx.Finish(SpanStatus.Ok);
}
catch (Exception)
{tx.Finish(SpanStatus.InternalError);throw;
}

HealthChecks 与 UI 🩺

// healthchecks-settings.json
{"HealthChecksUI": {"HealthChecks": [{"Name": "ABP Core","Uri": "http://localhost:5000/health"}],"EvaluationTimeOnSeconds": 30,"MinimumSecondsBetweenFailureNotifications": 60,"Storage": {"ConnectionString": "Server=...;Database=HealthChecks;User Id=...;"}}
}

已在 Program.cs 中通过 .AddSqlServerStorage(...) 完成持久化配置。


日志生命周期管理 (ILM) 🔄

# 创建 ILM 策略
PUT _ilm/policy/abp-logs-policy
{"policy": {"phases": {"hot":    { "actions": { "rollover": { "max_age": "7d", "max_size": "50gb" } } },"warm":   { "actions": { "forcemerge": { "max_num_segments": 1 } } },"delete": { "actions": { "delete": { "min_age": "30d" } } }}}
}# 创建 Alias 并激活 Rollover
PUT /abp-logs-write
{"aliases": { "abp-logs": {} }
}

appsettings.Production.json 中,将 IndexFormat 修改为:

"IndexFormat": "abp-logs-write-{0:yyyy.MM.dd}"

容器化部署示例 🐳

version: '3.8'
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.17.10ports: ["9200:9200"]environment:- discovery.type=single-nodekibana:image: docker.elastic.co/kibana/kibana:7.17.10ports: ["5601:5601"]depends_on: ["elasticsearch"]logstash:  # 可选:集中化管道image: docker.elastic.co/logstash/logstash:7.17.10ports: ["5044:5044"]volumes:- ./logstash/pipeline/:/usr/share/logstash/pipeline/depends_on: ["elasticsearch"]app:image: yourorg/abp-sentry-elk-demo:latestports: ["5000:80"]environment:- ASPNETCORE_ENVIRONMENT=Production- SENTRY__DSN=${SENTRY__DSN}depends_on: ["elasticsearch"]
AppCluster
写日志
写日志
LoggingStack
Kibana
Elasticsearch
Logstash
App1
App2

Kubernetes 部署示例 ☸️

apiVersion: v1
kind: Secret
metadata:name: sentry-secret
stringData:DSN: https://xxxx@sentry.io/project
---
apiVersion: apps/v1
kind: Deployment
metadata:name: abp-elk-app
spec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 0selector:matchLabels:app: abp-elktemplate:metadata:labels:app: abp-elkspec:containers:- name: appimage: yourorg/abp-sentry-elk-demo:latestenv:- name: ASPNETCORE_ENVIRONMENTvalue: Production- name: SENTRY__DSNvalueFrom:secretKeyRef:name: sentry-secretkey: DSNports:- containerPort: 80

http://www.yayakq.cn/news/606630/

相关文章:

  • 上海城乡住房建设厅网站网络营销平台的主要功能
  • c 做精品课程网站跨境电商平台企业
  • 1000学习做网站贵吗南京高端网站建设工作室
  • 自己怎样建立网站给自己家的公司做网站好做吗
  • 网站做多久才有流量品牌seo主要做什么
  • 加快门户网站建设大连公共资源交易平台
  • 如何申请一个免费的网站空间个人网站能做淘宝客吗
  • 怎么建立公司网站苏州网站开发公司招聘信息
  • 公司网站如何维护wordpress注册页面更改
  • 网站模板怎样使用成都网站制作报价
  • 建c2c网站室内装修设计联盟
  • 长沙专业网站建设服务网站建设与管理 规划书
  • 网站建设的具体步骤南海建设网站
  • 如何查看一个网站做的外链抢车票网站怎么做
  • 网站动态小图标郑佩佩 最新消息
  • 怎么做拍卖网站吗企业网站建设公司地址
  • 嘉兴做营销型网站wordpress块引用
  • 佛山住房和城乡建设部网站虚拟币交易网站源码
  • 网站建设框架注意事项网站建设项目网络图
  • 网站建设利益分析WordPress网络管理功能
  • php大型综合网站源码网站开发在线学习
  • 广州番禺营销型网站昌平区事业单位公共知识培训网站
  • 化妆品网站设计欣赏做网站的优化价格
  • 聊城建设局网站三大框架网站开发
  • 建设银行人力资源系统网站首页百度主动提交工具 wordpress
  • php网站的html文件放在那个里面的企业产品网站源码
  • 上海专业网站建做网站有好创意想法
  • 晚上做设计挣钱的网站中国工商建设标准化协会网站
  • 佛山顺德网站建设wordpress免费企模板下载
  • 开公司做购物网站是不是想多了文化网站开发背景