NET 开源实时监控系统 - WatchDog
1. 前言
在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间。
本文将介绍一个名为WatchDog的.NET开源实时应用监控系统,它可以帮助我们轻松实现对.NET应用的实时监控。
2. 项目介绍
WatchDog是一个开源(MIT License)、免费的实时应用监控系统,专为ASP.NET Core Web应用程序和API设计。我们可以实时记录和查看应用程序中的消息、事件、HTTP请求和响应,以及运行时捕获的异常。
一个高效的监控系统不仅能提高应用的可用性和可靠性,还能帮助我们更快地解决问题。WatchDog是一款专为.NET应用设计的开源实时应用监控系统,它提供了一系列强大的功能来帮助我们监控应用的状态和性能。

3. 功能特点
- 实时日志记录:能够实时记录HTTP请求、响应以及运行时捕获的异常。
- 代码内日志记录:支持在代码中记录消息和事件。
- 日志视图查看:提供易于使用的日志查看界面。
- 日志搜索功能:支持对HTTP请求和异常日志进行搜索。
- HTTP日志筛选:可根据HTTP方法和状态码筛选HTTP日志。
- 日志视图认证:提供日志视图的访问权限控制。
- 自动日志清理:支持自动清除旧的日志记录。
- 报警通知:支持通过邮件、短信等多种方式发送报警通知,确保能够及时得到反馈。
- 灵活配置:可以根据应用需求进行灵活的配置,适应不同的监控需求。
- 易于集成:通过简单的API调用即可集成到现有的.NET应用中。
4. 项目技术栈
- 后端:基于.NET Core 或 .NET 5及以上版本。
- 前端:使用 React 或 Angular等前端框架搭建的用户界面。
- 数据库:支持MySQL、PostgreSQL等关系型数据库,以及MongoDB等NoSQL数据库。
- 官方支持 .NET 8:新增对 .NET 8 的官方支持。
- .NET 8 中的 Output Cache 支持:增加了对 .NET 8 中使用 Output Cache 的支持。
- 使用正则表达式黑名单:新增了使用正则表达式进行黑名单过滤的功能。
5. 工作原理
WatchDog 利用 SignalR 实现了实时监控,并使用LiteDb作为无需配置的类似MongoDB的服务器端数据库,同时也支持使用外部数据库(如MSSQL、MySQL、PostgreSQL、MongoDB)。
5.1 1、支持.NET版本
.NET Core 3.1 及更高版本。
5.2 2、下载源码
通过下载源码,可以进行学习和应用,具体操作如下图所示:

6. 安装与配置
6.1 1、WatchDog 安装
搜索 WatchDog.NETNuGet包进行安装,具体如下图所示:

6.2 2、WatchDog 服务注册
在ASP.NET Core Web API 的Program.cs或 Startup.cs中注册 WatchDog 服务。
从ILogger 记录日志到 WatchDog
还可以将来自.NET的ILogger的日志记录到 WatchDog 中。
适用于 .NET 6 及以上版本
builder.Services.AddWatchDogServices(opt =>  {  
    opt.IsAutoClear = true;  
    opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly;  
    opt.DbDriverOption = WatchDogDbDriverEnum.Mongo;  
    opt.SetExternalDbConnString = "mongodb://localhost:27017";  
});  
builder.Logging.AddWatchDogLogger();对于 .NET Core 3.1
在 Program.cs 类的 CreateHostBuilder 方法中配置日志记录,并添加 .AddWatchDogLogger()。
Host.CreateDefaultBuilder(args)
 .ConfigureLogging( logging =>
 {
     logging.AddWatchDogLogger();
 })
 .ConfigureWebHostDefaults(webBuilder =>
 {
     webBuilder.UseStartup();
 }); 6.3 3、添加异常记录器
在主要的WatchDog中间件之前添加异常日志记录器,最好将其放置在中间件的最上面,以便捕捉可能的早期异常。
app.UseWatchDogExceptionLogger();
...
app.UseWatchDog(opt => { 
   opt.WatchPageUsername = "admin"; 
   opt.WatchPagePassword = "Qwerty@123"; 
   ...
 });6.4 4、设置自动清除日志(可选)
该功能可在特定时间后自动清除日志。
注意:当IsAutoClear设置为true时,默认的清除计划时间为每周。
如需覆盖默认设置,请按照以下方式进行配置:
services.AddWatchDogServices(opt => { 
   opt.IsAutoClear = true;
   opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly;
});6.5 5、设置日志记录到外部数据库(可选)
将日志记录到数据库,如SQL Server (MSSQL)、MySQL、PostgreSQL 或 MongoDB,可以根据需求配置。
- 添加数据库连接字符串:提供数据库的连接字符串。
- 选择数据库驱动选项:根据所使用的数据库类型选择合适的驱动程序。
services.AddWatchDogServices(opt => {
   opt.IsAutoClear = true; 
   opt.SetExternalDbConnString = "Server=localhost;Database=testDb;
   User Id=postgres;Password=root;"; 
   opt.DbDriverOption = WatchDogDbDriverEnum.PostgreSql; 
});6.6 6、设置访问日志的账号密码
app.UseWatchDog(opt => { 
   opt.WatchPageUsername = "admin"; 
   opt.WatchPagePassword = "Qwerty@123"; 
 });注意:如果你的项目使用权限验证,那么 app.UseWatchDog(); 应该在 app.UseRouting(), app.UseAuthentication(), 和 app.UseAuthorization() 之后按顺序添加。
6.7 7、配置说明和示例
- 黑名单:要忽略的路由、路径或端点列表(应为逗号分隔的字符串,如下所示)。
- 序列化器:如果不使用默认的全局 JSON 序列化器/转换器,请指定类型。
- CORS策略:如果项目使用了跨源资源共享(CORS),请指定策略名称。
- 使用Output缓存:如果项目使用了ASP.NET Output缓存。功能仅适用于 .NET 8 及以上版本。
- 使用正则表达式黑名单:启用使用正则表达式来黑名单化请求路由、路径或端点。
示例配置
app.UseWatchDog(opt => { 
   opt.WatchPageUsername = "admin"; 
   opt.WatchPagePassword = "Qwerty@123"; 
   //Optional
   opt.Blacklist = "Test/testPost, api/auth/login"; 
   //Prevent logging for specified endpoints
   opt.Serializer = WatchDogSerializerEnum.Newtonsoft; 
   //If your project use a global json converter
   opt.CorsPolicy = "MyCorsPolicy";
   opt.UseOutputCache = true;
   opt.UseRegexForBlacklisting = true;
 });6.8 8、记录消息/事件
WatchLogger.Log("...Test Log...");
WatchLogger.LogWarning(JsonConvert.Serialize(model));
WatchLogger.LogError(res.Content, eventId: reference);6.9 9、查看日志和异常
启动服务器并访问 /watchdog 来查看日志。
示例:
https://myserver.com/watchdoghttps://localhost:[your-port]/watchdog
7. 项目效果
7.1 1、WatchDog登录

7.2 2、WatchDog 日志

7.3 3、请求日志

7.4 4、消息/事件

8. 项目地址
Github:https://github.com/IzyPro/WatchDog
WatchDog 是一款强大且易于使用的.NET开源实时应用监控系统。通过使用WatchDog,我们可以轻松实现对.NET应用的实时监控,提高应用的稳定性和可靠性。希望这篇文章能够帮助你更好地理解和使用WatchDog。
提示:在享受本文内容的同时,请注意版权归属 徐州鑫坤机电设备有限公司https://www.xzxkjd.com如果您觉得有价值欢迎分享,但请务必注明出处,感谢您的理解,谢谢!
以下部分内容需要登录查看 立即登录
相关内容
- NET 开源实时监控系统 - WatchDog
- 上海非急救出租服务全解析
- 深耕中考复读赛道 深圳深才教育为复读生搭建升学桥梁
- 阳光下的童年:那些被温暖照亮的纯真时光
- 群晖DSM7.0-7.21监控套件Surveillance Station 9.20-11289开心版60个许可证设置教程(无重启、无断流、无卡死、史上最完美)
- 云服务器+SD-WAN组网和域名DNS解析
- 在云主机上安装iKuai OS,实现SD-WAN组网,利用云主机80;443端口搭建企业网站。个人博客。让云主机当做你的堡垒机,实现数据本地化。
- 中央空调只开一台=全开耗电?真相让人意外!
- 告别卡顿时代:PCDN正成为互联网内容分发的核心引擎
- 5G时代必备!PCDN如何让视频加载速度快如闪电?
- 降本增效利器!企业都在用的PCDN技术到底强在哪?
- 揭秘PCDN业务:如何用边缘计算重构内容分发新生态?
 简体中文
简体中文 繁體中文
繁體中文 English
English Nederlands
Nederlands Français
Français Русский язык
Русский язык Polski
Polski 日本語
日本語 ภาษาไทย
ภาษาไทย Deutsch
Deutsch Português
Português español
español Italiano
Italiano 한어
한어 Suomalainen
Suomalainen Gaeilge
Gaeilge dansk
dansk Tiếng Việt
Tiếng Việt Pilipino
Pilipino Ελληνικά
Ελληνικά Maori
Maori tongan
tongan ᐃᓄᒃᑎᑐᑦ
ᐃᓄᒃᑎᑐᑦ ଓଡିଆ
ଓଡିଆ Malagasy
Malagasy Norge
Norge bosanski
bosanski नेपालीName
नेपालीName čeština
čeština فارسی
فارسی हिंदी
हिंदी Kiswahili
Kiswahili ÍslandName
ÍslandName ગુજરાતી
ગુજરાતી Slovenská
Slovenská היברית
היברית ಕನ್ನಡ್Name
ಕನ್ನಡ್Name Magyar
Magyar தாமில்
தாமில் بالعربية
بالعربية বাংলা
বাংলা Azərbaycan
Azərbaycan lifiava
lifiava IndonesiaName
IndonesiaName Lietuva
Lietuva Malti
Malti català
català latviešu
latviešu УкраїнськаName
УкраїнськаName Cymraeg
Cymraeg ກະຣຸນາ
ກະຣຸນາ తెలుగుQFontDatabase
తెలుగుQFontDatabase Română
Română Kreyòl ayisyen
Kreyòl ayisyen Svenska
Svenska հայերեն
հայերեն ဗာရမ်
ဗာရမ် پښتوName
پښتوName Kurdî
Kurdî Türkçe
Türkçe български
български Malay
Malay मराठीName
मराठीName eesti keel
eesti keel മലമാലം
മലമാലം slovenščina
slovenščina اوردو
اوردو አማርኛ
አማርኛ ਪੰਜਾਬੀName
ਪੰਜਾਬੀName albanian
albanian Hrvatski
Hrvatski Suid-Afrikaanse Dutch taal
Suid-Afrikaanse Dutch taal ខ្មែរKCharselect unicode block name
ខ្មែរKCharselect unicode block name


 印修
 印修


