首页 > 其他分享 >.NET 开源实时监控系统 - WatchDog

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

时间:2024-08-29 23:21:17浏览次数:10  
标签:opt 数据库 实时 开源 WatchDog NET 日志

目录

前言

项目介绍

功能特点

项目技术栈

工作原理

1、支持.NET版本

2、下载源码

安装与配置

1、WatchDog 安装

2、WatchDog 服务注册

3、添加异常记录器

4、设置自动清除日志(可选)

5、设置日志记录到外部数据库(可选)

6、设置访问日志的账号密码

7、配置说明和示例

8、记录消息/事件

9、查看日志和异常

项目效果

1、WatchDog登录

2、WatchDog 日志

3、请求日志

4、消息/事件

项目地址

总结

最后


前言

在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间。

本文将介绍一个名为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包进行安装,具体如下图所示:

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技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

标签:opt,数据库,实时,开源,WatchDog,NET,日志
From: https://blog.csdn.net/u012573563/article/details/141559563

相关文章

  • 三分钟总结开源流程表单的优势特点
    实现流程化办公,可以借助低代码技术平台、开源流程表单的优势特点。作为当前较为理想的平台产品,低代码技术平台凭借够灵活、好操作、可视化界面的优势特点,得到了通信业、医疗、高校等很多行业客户朋友的喜爱与支持。今天一起来看看开源流程表单的优势特点,一起了解它为何能助力企业......
  • Miaoo朋友圈程序全开源版源码
    Miaoo朋友圈程序全开源版源码探索开源之美:Miaoo朋友圈程序全开源版源码深度解析在这个信息**的时代,社交媒体平台如雨后春笋般涌现,它们不仅改变了我们交流的方式,也深刻影响了我们的生活方式。小红书,这个集社交与电商于一体的平台,已经成为了无数人分享生活、发现美好的新天......
  • 校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序
    校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序【校园小情书】——用代码编织的青春告白在这个数字化的时代,我们的情感表达也逐渐从纸笔转向了屏幕。小红书上的小伙伴们,你们是否也曾幻想过,在校园的某个角落,有一个属于自己的表白墙,可以匿名或实......
  • .NET 摄像头采集
    本文主要介绍摄像头(相机)如何采集数据,用于类似摄像头本地显示软件,以及流媒体数据传输场景如传屏、视讯会议等。摄像头采集有多种方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),网上一些文章以及github已经有很多介绍,这里总结下1. AForge.......
  • # dotnet如何设置restore package path,依赖和项目放在一起
    dotnet如何设置restorepackagepath,依赖和项目放在一起配置说明再.csproj中添加如下配置,然后dotnetrestore,可以依赖包放到和项目一起,从而方便移动到没有网络的电脑上执行<RestorePackagesPath>../packages</RestorePackagesPath>所需的依赖包就会复制一份到本地,如下......
  • 深度学习-pytorch-nerual network价格预测-004
    #1.导入相关模块importtorchfromtorch.utils.dataimportTensorDatasetfromtorch.utils.dataimportDataLoaderimporttorch.nnasnnimporttorch.optimasoptimfromsklearn.datasetsimportmake_regressionfromsklearn.model_selectionimporttrain_test_spli......
  • linux mount net fs
    linuxmountnetfsnfsubuntu安装nfs:sudoaptinstallnfs-kernel-server编辑/etc/exports文件,添加如下内容:/home/wyk/nfs*(rw,sync,no_root_squash,no_subtree_check)重启nfs服务sudo/etc/init.d/rpcbindrestartsudo/etc/init.d/nfs-kernel-serverrestart开......
  • Kubernetes 中必备的 10 个告警处置方法
    运行Kubernetes集群,显然不止是启动,还需要持续监控,以确保Kubernetes中的服务能正常运行。不过,您不想整天盯着一堆Kubernetes仪表板(即便仪表板再多么美观)。您希望使用适当的警报来设置Kubernetes警报,对吗?借助k8s警报,您将快速发现Kubernetes集群中的问题,并希望也能快速......
  • .net Core发布IIS的各种异常解答
    一.IIS启动之后发布项目失败原因以及解决方案1.查看本机应用池模块是否有AspNetCoreMoudleV2,如果没有,需要去微软官网下载一个HostingBundle安装2.查看程序池的.netCLR版本要选择无托管代码3.标识应该选择localsystem二.打开网页提示用户登录数据失败原因以及解决方案1.......
  • 利用通义灵码实现我的第一次开源贡献
    作者:重庆邮电大学计算机学院李逸雄结缘开源最早了解开源是从学校的兴趣组织开始的。2023年10月21日,openSUSE亚洲峰会在我们学校召开,这次会议汇聚了许多来自openSUSE社区贡献者以及对开源感兴趣的爱好者们。我第一次知道有这么多志同道合的爱好者在进行开源贡献,他们以个......