Layout.WatchDog.NET 1.5.0-beta.2 发布:.NET 实时应用监控再升级,新增资源监控看板与 SQLite 支持

Layout.WatchDog.NET 1.5.0-beta.2 发布:.NET 实时应用监控再升级,新增资源监控看板与 SQLite 支持

一个专为 ASP.NET Core 设计的轻量级、实时、可落地的应用日志和资源监控 "看门狗"

安装 nuget 包:

csharp 复制代码
dotnet add package Layout.WatchDog.NET --version 1.5.0-beta.2

一、WatchDog 是什么?

WatchDog 是一个面向 ASP.NET Core Web 应用与 API 的实时消息、事件、HTTP 请求/响应与异常记录器、查看器。

它帮你解决这些痛点:

  • 接口为什么 500?请求参数是什么?
  • 异常发生在哪一行?上下文是什么?
  • 生产环境不想接重型 APM,又想有实时日志台?
  • 想看 CPU、内存、GC,但不想先搭 Prometheus + Grafana?

WatchDog 的理念 是:零配置能跑,生产可扩展,开发调试像看实时聊天记录。

核心能力:

  • 实时 HTTP 请求 / 响应记录
  • 运行时异常自动捕获
  • 代码内业务日志(WatchLogger / ILogger 接口)
  • SignalR 实时推送
  • 内置 Web 看板(WatchDog.WatchPage)
  • 多数据库支持(关系型:MS SQL Server / MySQL / PostgreSQL;NoSQL 文档型:MongoDB;嵌入式单文件数据库:LiteDB 与 Sqlite)
  • 新版本新增 :服务器资源监控 + 独立 WatchDog.Dashboard

二、1.5.0-beta.2 核心亮点

1. 新增独立 WatchDog.Dashboard 看板(Vue 3.5 + TanStack + Tailwind)

不再是"能看日志的页面",而是一个真正现代化的监控面板。

  • Light 浅色主题
  • Dark 深色主题

特性:

  • Vue 3.5 实现,前端资源内嵌,无需单独部署
  • 支持深色 / 浅色 / 跟随系统主题
  • 支持中文 / English 切换
  • Sparkline、RingGauge、StackedBar 等图表组件
  • 看板与旧版页面共存,可平滑迁移

启用方式:

csharp 复制代码
app.UseWatchDog(opt =>
{
    // 此处演示默认账号和密码,生产使用请走配置密钥处理
    opt.WatchPageUsername = "admin";
    opt.WatchPagePassword = "Qwerty@123";

    opt.Dashboard.Enabled = true;
    opt.Dashboard.BasePath = "/watchdog";
    opt.Dashboard.DefaultLocale = "zh-Hans";
    opt.Dashboard.DefaultTheme = "dark";
});

入口地址:

  • 新看板:/watchdog
  • 旧内嵌页:/watchdog-legacy

如果看板产物缺失,会自动降级到旧页面并输出 warning,不影响系统启动。

2. 新增服务器资源监控总览

这是 1.5.0-beta.2 最值得关注的能力之一。

监控指标:

分类 指标
CPU 使用率、核心数、负载趋势
内存 已用 / 可用 / 工作集
磁盘 分区使用率、读写趋势
网络 收发速率、流量堆叠
运行时 线程数、句柄数、线程池
GC 各代回收、内存分配

后端新增:

  • Helpers/Metrics 节点指标采集
  • 按平台区分:Windows / Linux / macOS / Portable
  • 进程级指标采集
  • Dashboard API :watchdog-api/v1/*

适合场景:

  • 单节点服务自检
  • 边缘节点 / 内网系统
  • 不想接外部监控系统的轻量场景
  • 开发环境"一眼看全貌"

3. 新增 SQLite 数据库驱动

在 LiteDB 基础上,新增第一种 "标准 SQL 单文件存储":

csharp 复制代码
services.AddWatchDogServices(opt =>
{
    opt.DbDriverOption = WatchDogDbDriverEnum.Sqlite;
    opt.SetExternalDbConnString = "Data Source=watchdog.db";
});

SQLite 模式特性:

  • 零独立服务,单文件存储
  • 可用标准 SQL 工具直接查日志
  • 自动开启 WAL、busy_timeout=5000、synchronous=NORMAL
  • 相对路径自动归一到 AppContext.BaseDirectory
  • 支持 VACUUM 回收空间

手动压缩端点:

复制代码
GET /WTCHDwatchpage/Compact

适用于:

  • 升级后治理膨胀库
  • 磁盘空间告急
  • 单机长期运行实例

4. 数据库支持总览

驱动 说明 适用场景
LiteDB 默认,零配置单文件 本地开发、小项目
SQLite 新增,标准 SQL 单文件 边缘部署、轻运维
MSSQL 外部关系型数据库 企业内网
MySQL 外部关系型数据库 常见业务系统
PostgreSQL 外部关系型数据库 云原生 / 微服务
MongoDB 文档数据库 高写入、弹性扩展

配置示例:

csharp 复制代码
services.AddWatchDogServices(opt =>
{
    opt.DbDriverOption = WatchDogDbDriverEnum.PostgreSql;
    opt.SetExternalDbConnString ="Server=localhost;Database=WatchDogDb;User Id=postgres;Password=root;";
});

5. 目标 .NET 框架

1.5.0-beta.2 同时支持:

  • .NET 8
  • .NET 10

依赖按框架自动区分:

依赖 net8.0 net10.0
Microsoft.Data.Sqlite 8.0.33 10.0.14
Npgsql 8.0.9 10.0.3
MySql.Data 9.7.0 26.10.0

适合:

  • 老项目 .NET 8 平滑接入
  • 新项目直接面向 .NET 10

三、快速接入:5 分钟跑起来

1. 安装

bash 复制代码
dotnet add package Layout.WatchDog.NET --version 1.5.0-beta.2

或 PackageReference:

xml 复制代码
<PackageReference Include="Layout.WatchDog.NET" Version="1.5.0-beta.2" />

2. 注册服务

csharp 复制代码
builder.Services.AddWatchDogServices(opt =>
{
    opt.DbDriverOption = WatchDogDbDriverEnum.Sqlite;
    opt.SetExternalDbConnString = "Data Source=watchdog.db";
    
    opt.IsAutoClear = true;
    opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Weekly;
});

builder.Logging.AddWatchDogLogger();

3. 配置中间件

csharp 复制代码
var app = builder.Build();

app.UseWatchDogExceptionLogger();

app.UseWatchDog(opt =>
{
    opt.WatchPageUsername = "admin";
    opt.WatchPagePassword = "Qwerty@123";

    opt.Dashboard.Enabled = true;
    // 不记录敏感接口
    opt.Blacklist = "api/auth/login, health";
    // 正则黑名单
    opt.UseRegexForBlacklisting = true;
});

4. 业务代码打点

csharp 复制代码
using WatchDog;

WatchLogger.Log("用户登录成功");
WatchLogger.LogWarning("请求频率过高");
WatchLogger.LogError("处理订单失败", eventId: "Order_001");

5. 打开看板

启动应用后访问:

复制代码
https://localhost:5000/watchdog

登录后可以看到:

  • HTTP 请求 / 响应
  • 异常堆栈
  • 业务日志
  • 服务器资源总览
  • 实时刷新

  • 请求日志
  • 异常日志

切换"深色"主题,点击行可查看日志详细信息:

  • 代码内日志
  • 查看旧版页面

旧版 WatchDog.WatchPage 和 新版 WatchDog.Dashboard 兼容并行,两个资源内嵌看板相互独立可切换查看。


四、生产友好能力

1. 多实例写入安全

日志 ID 使用雪花算法:

复制代码
41 位时间 + 10 位 WorkerId + 12 位序列号

多实例写同一库时:

csharp 复制代码
opt.WorkerId = 1; // 0-1023,每个实例不同

或通过环境变量:

bash 复制代码
WATCHDOG_WORKER_ID=2 dotnet MyApp.dll

好处:

  • 清空日志后 ID 不回退
  • 多进程排序稳定
  • LiteDB / MongoDB 下全局有序

2. 自动清理与压缩

  • 支持按日 / 周 / 月自动清理
  • LiteDB 清空后自动 Compact
  • SQLite 清空后自动 VACUUM
  • 手动触发:/WTCHDwatchpage/Compact

3. 安全与隔离

  • 看板自带账号密码
  • 支持路径黑名单
  • 支持正则过滤
  • 支持 CORS 策略
  • 支持输出缓存兼容
csharp 复制代码
opt.CorsPolicy = "MyCorsPolicy";
opt.UseOutputCache = true;

五、和原 WatchDog.NET 的区别

维度 上游 WatchDog.NET Layout.WatchDog.NET
维护状态 1.4.12 存在依赖安全隐患 持续维护
.NET 10 不完整 官方支持
SQLite 不支持 支持
独立看板 无/内置WatchPage(存在技术债) Vue3 Dashboard/兼容WatchPage(技术栈升级补丁修复版)
资源监控 弱 CPU/内存/磁盘/网络/GC
ID 生成 自增 雪花 ID
多实例 一般 WorkerId 显式隔离
清理压缩 LiteDB 不完整 LiteDB + SQLite 自动压缩

六、适用场景

  • ASP.NET Core API 调试
  • 内部管理系统运维
  • 微服务单节点观测
  • 边缘设备 / 单机服务
  • 不想接重型 APM 的小团队
  • .NET 8 / .NET 10 项目可观测性补齐

七、版本说明

当前版本: Layout.WatchDog.NET 1.5.0-beta.2

状态:

  • 预发布版本
  • 适合试用、内部环境、非强依赖生产
  • 建议生产使用前做一轮压测与权限审计

如果遇到问题:


八、一句话总结

Layout.WatchDog.NET 1.5.0-beta.2 = 实时 HTTP 日志 + 异常追踪 + 业务埋点 + SQLite/多数据库 + 服务器资源监控 + 现代化 Dashboard,专为 .NET 8 / .NET 10 打造。

如果你正在找一个:

  • 不重,轻量级,MIT 协议开源
  • 不贵,支持商业和个人任意用途免费使用
  • 不依赖外部服务
  • 能直接嵌进 ASP.NET Core
  • 开发看日志、运维看资源都够用

的监控组件,欢迎试试 Layout.WatchDog.NET。

相关推荐
Decay__1 小时前
03_MySQL 存储引擎与存储管理 —— InnoDB 深入、表空间/ibd、binlog/redo/undo 与双写缓冲
运维·数据库·sql·mysql·架构
bksczm1 小时前
MySQL程序架构
数据库·mysql·架构
川石课堂软件测试10 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
1024奇点17 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源
冰暮流星18 小时前
mysql之insert优化
数据库·mysql
北方的银狐-Zero18 小时前
OntoL 7.0|面向工业多智能体的语义本体套件,让异构系统真正 “看懂彼此”——OntoL的本体产品矩阵
人工智能·mysql·sqlite·1024程序员节·本体论·本体产品
瑞克-桑切斯19 小时前
4、MySQL 索引与事务
数据库·mysql
二宝哥19 小时前
【问题】本地启动springboot项目启动flowable引擎会提示数据库脚本错误,同事本地启动没有报错(MySQL表明大小写敏感参数)
数据库·mysql