WatchDog:一款.NET开源的实时应用监控系统
项目介绍
WatchDog是一个开源(MIT License)、免费、针对ASP.Net Core Web应用程序和API的实时应用监控系统。开发者可以实时记录和查看他们的应用程序中的消息、事件、HTTP请求和响应,以及运行时捕获的异常。
项目工作原理
它利用SignalR进行实时监控,并使用LiteDB作为无需配置的类似MongoDB的无服务器数据库,同时也支持使用外部数据库(如MSSQL
、MySQL
、Postgres
、MongoDB
)。
支持.NET版本
.NET Core 3.1 及更高版本。
项目源代码
WatchDog安装
搜索WatchDog.NET
NuGet包安装:
WatchDog服务注册
在ASP.NET Core Web API的Program.cs
中注册WatchDog服务:
builder.Services.AddWatchDogServices(opt =>
{
opt.IsAutoClear = true;
opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly;
opt.DbDriverOption = WatchDogDbDriverEnum.Mongo;
opt.SetExternalDbConnString = "mongodb://localhost:27017";
});
builder.Logging.AddWatchDogLogger();
添加异常记录器
app.UseWatchDogExceptionLogger();
设置访问日志的账号密码
app.UseWatchDog(conf =>
{
conf.WatchPageUsername = "Admin";
conf.WatchPagePassword = "9999999999";
conf.Blacklist = "/auth, user";
});
项目监控截图
项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。
https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
2024-06-22 22:51:53【出处】:https://www.cnblogs.com/Can-daydayup/p/18261633
=======================================================================================
.NET 开源实时监控系统 - WatchDog
前言
在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间。
本文将介绍一个名为WatchDog的.NET开源实时应用监控系统,它可以帮助我们轻松实现对.NET应用的实时监控。
项目介绍
WatchDog是一个开源(MIT License)、免费的实时应用监控系统,专为ASP.NET Core Web应用程序和API设计。我们可以实时记录和查看应用程序中的消息、事件、HTTP请求和响应,以及运行时捕获的异常。
一个高效的监控系统不仅能提高应用的可用性和可靠性,还能帮助我们更快地解决问题。WatchDog是一款专为.NET应用设计的开源实时应用监控系统,它提供了一系列强大的功能来帮助我们监控应用的状态和性能。
功能特点
- 实时日志记录:能够实时记录HTTP请求、响应以及运行时捕获的异常。
- 代码内日志记录:支持在代码中记录消息和事件。
- 日志视图查看:提供易于使用的日志查看界面。
- 日志搜索功能:支持对HTTP请求和异常日志进行搜索。
- HTTP日志筛选:可根据HTTP方法和状态码筛选HTTP日志。
- 日志视图认证:提供日志视图的访问权限控制。
- 自动日志清理:支持自动清除旧的日志记录。
- 报警通知:支持通过邮件、短信等多种方式发送报警通知,确保能够及时得到反馈。
- 灵活配置:可以根据应用需求进行灵活的配置,适应不同的监控需求。
- 易于集成:通过简单的API调用即可集成到现有的.NET应用中。
项目技术栈
- 后端:基于.NET Core 或 .NET 5及以上版本。
- 前端:使用 React 或 Angular等前端框架搭建的用户界面。
- 数据库:支持MySQL、PostgreSQL等关系型数据库,以及MongoDB等NoSQL数据库。
- 官方支持 .NET 8:新增对 .NET 8 的官方支持。
- .NET 8 中的 Output Cache 支持:增加了对 .NET 8 中使用 Output Cache 的支持。
- 使用正则表达式黑名单:新增了使用正则表达式进行黑名单过滤的功能。
工作原理
WatchDog 利用 SignalR 实现了实时监控,并使用LiteDb作为无需配置的类似MongoDB的服务器端数据库,同时也支持使用外部数据库(如MSSQL、MySQL、PostgreSQL、MongoDB)。
1、支持.NET版本
.NET Core 3.1 及更高版本。
2、下载源码
通过下载源码,可以进行学习和应用,具体操作如下图所示:
安装与配置
1、WatchDog 安装
搜索 WatchDog.NET
NuGet包进行安装,具体如下图所示:
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<Startup>(); });
3、添加异常记录器
在主要的WatchDog中间件之前添加异常日志记录器,最好将其放置在中间件的最上面,以便捕捉可能的早期异常。
app.UseWatchDogExceptionLogger(); ... app.UseWatchDog(opt => { opt.WatchPageUsername = "admin"; opt.WatchPagePassword = "Qwerty@123"; ... });
4、设置自动清除日志(可选)
该功能可在特定时间后自动清除日志。
注意:当IsAutoClear
设置为true
时,默认的清除计划时间为每周。
如需覆盖默认设置,请按照以下方式进行配置:
services.AddWatchDogServices(opt => { opt.IsAutoClear = true; opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly; });
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、设置访问日志的账号密码
app.UseWatchDog(opt => { opt.WatchPageUsername = "admin"; opt.WatchPagePassword = "Qwerty@123"; });
注意:如果你的项目使用权限验证,那么 app.UseWatchDog();
应该在 app.UseRouting()
, app.UseAuthentication()
, 和 app.UseAuthorization()
之后按顺序添加。
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; });
8、记录消息/事件
WatchLogger.Log("...Test Log..."); WatchLogger.LogWarning(JsonConvert.Serialize(model)); WatchLogger.LogError(res.Content, eventId: reference);
9、查看日志和异常
启动服务器并访问 /watchdog
来查看日志。
示例:
https://myserver.com/watchdog https://localhost:[your-port]/watchdog
项目效果
1、WatchDog登录
2、WatchDog 日志
3、请求日志
4、消息/事件
项目地址
Github:https://github.com/IzyPro/WatchDog
总结
WatchDog 是一款强大且易于使用的.NET开源实时应用监控系统。通过使用WatchDog,我们可以轻松实现对.NET应用的实时监控,提高应用的稳定性和可靠性。希望这篇文章能够帮助你更好地理解和使用WatchDog。
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
2024-09-02 15:25:38【出处】:https://www.cnblogs.com/1312mn/p/18379779
=======================================================================================
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/18262844
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!