.NET 开源实时监控体系 - WatchDog

鼠扑  金牌会员 | 2024-8-27 13:30:58 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 921|帖子 921|积分 2763

前言

在平时的开发中随着我们体系应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位题目,还能在出现题目时及时采取措施,减少业务中断的时间。
本文将介绍一个名为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.NETNuGet包进行安装,详细如下图所示:

<img alt="">
2、WatchDog 服务注册

在ASP.NET Core Web API 的Program.cs或 Startup.cs中注册 WatchDog 服务。
从ILogger 记载日志到 WatchDog
还可以将来自.NET的ILogger的日志记载到 WatchDog 中。
适用于 .NET 6 及以上版本
  1. builder.Services.AddWatchDogServices(opt =>  
  2. {  
  3.     opt.IsAutoClear = true;  
  4.     opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly;  
  5.     opt.DbDriverOption = WatchDogDbDriverEnum.Mongo;  
  6.     opt.SetExternalDbConnString = "mongodb://localhost:27017";  
  7. });  
  8. builder.Logging.AddWatchDogLogger();  
复制代码
对于 .NET Core 3.1
在 Program.cs 类的 CreateHostBuilder 方法中配置日志记载,并添加 .AddWatchDogLogger()。
  1. Host.CreateDefaultBuilder(args)
  2. .ConfigureLogging( logging =>
  3. {
  4.      logging.AddWatchDogLogger();
  5. })
  6. .ConfigureWebHostDefaults(webBuilder =>
  7. {
  8.      webBuilder.UseStartup<Startup>();
  9. });
复制代码
3、添加异常记载器

在主要的WatchDog中间件之前添加异常日志记载器,最好将其放置在中间件的最上面,以便捕获大概的早期异常。
  1. app.UseWatchDogExceptionLogger();
  2. ...
  3. app.UseWatchDog(opt =>
  4. {
  5.    opt.WatchPageUsername = "admin";
  6.    opt.WatchPagePassword = "Qwerty@123";
  7.    ...
  8. });
复制代码
4、设置自动清除日志(可选)

该功能可在特定时间后自动清除日志。
注意:当IsAutoClear设置为true时,默认的清除筹划时间为每周。
如需覆盖默认设置,请按照以下方式进行配置:
  1. services.AddWatchDogServices(opt =>
  2. {
  3.    opt.IsAutoClear = true;
  4.    opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly;
  5. });
复制代码
5、设置日志记载到外部数据库(可选)

将日志记载到数据库,如SQL Server (MSSQL)、MySQL、PostgreSQL 或 MongoDB,可以根据需求配置。

  • 添加数据库毗连字符串:提供数据库的毗连字符串。
  • 选择数据库驱动选项:根据所利用的数据库类型选择合适的驱动程序。
  1. services.AddWatchDogServices(opt =>
  2. {
  3.    opt.IsAutoClear = true;
  4.    opt.SetExternalDbConnString = "Server=localhost;Database=testDb;
  5.    User Id=postgres;Password=root;";
  6.    opt.DbDriverOption = WatchDogDbDriverEnum.PostgreSql;
  7. });
复制代码
6、设置访问日志的账号暗码
  1. app.UseWatchDog(opt =>
  2. {
  3.    opt.WatchPageUsername = "admin";
  4.    opt.WatchPagePassword = "Qwerty@123";
  5. });
复制代码
注意:如果你的项目利用权限验证,那么 app.UseWatchDog(); 应该在 app.UseRouting(), app.UseAuthentication(), 和 app.UseAuthorization() 之后按顺序添加。
7、配置说明和示例


  • 黑名单:要忽略的路由、路径或端点列表(应为逗号分隔的字符串,如下所示)。
  • 序列化器:如果不利用默认的全局 JSON 序列化器/转换器,请指定类型。
  • CORS策略:如果项目利用了跨源资源共享(CORS),请指定策略名称。
  • 利用Output缓存:如果项目利用了ASP.NET Output缓存。功能仅适用于 .NET 8 及以上版本。
  • 利用正则表达式黑名单:启用利用正则表达式来黑名单化哀求路由、路径或端点。
示例配置
  1. app.UseWatchDog(opt =>
  2. {
  3.    opt.WatchPageUsername = "admin";
  4.    opt.WatchPagePassword = "Qwerty@123";
  5.    //Optional
  6.    opt.Blacklist = "Test/testPost, api/auth/login";
  7.    //Prevent logging for specified endpoints
  8.    opt.Serializer = WatchDogSerializerEnum.Newtonsoft;
  9.    //If your project use a global json converter
  10.    opt.CorsPolicy = "MyCorsPolicy";
  11.    opt.UseOutputCache = true;
  12.    opt.UseRegexForBlacklisting = true;
  13. });
复制代码
8、记载消息/事件
  1. WatchLogger.Log("...Test Log...");
  2. WatchLogger.LogWarning(JsonConvert.Serialize(model));
  3. WatchLogger.LogError(res.Content, eventId: reference);
复制代码
9、查看日志和异常

启动服务器并访问 /watchdog 来查看日志。
示例
  1. https://myserver.com/watchdog
  2. https://localhost:[your-port]/watchdog
复制代码
项目效果

1、WatchDog登录


<img alt="">
2、WatchDog 日志


<img alt="">
3、哀求日志


<img alt="">
4、消息/事件


<img alt="">
项目地址

Github:https://github.com/IzyPro/WatchDog
总结

WatchDog 是一款强盛且易于利用的.NET开源实时应用监控体系。通过利用WatchDog,我们可以轻松实现对.NET应用的实时监控,进步应用的稳固性和可靠性。渴望这篇文章可以大概帮助你更好地明白和利用WatchDog。
末了

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表