- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间.
本文将介绍一个名为WatchDog的.NET开源实时应用监控系统,它可以帮助我们轻松实现对.NET应用的实时监控.
WatchDog是一个开源(MIT License)、免费的实时应用监控系统,专为ASP.NET Core Web应用程序和API设计。我们可以实时记录和查看应用程序中的消息、事件、HTTP请求和响应,以及运行时捕获的异常.
一个高效的监控系统不仅能提高应用的可用性和可靠性,还能帮助我们更快地解决问题。WatchDog是一款专为.NET应用设计的开源实时应用监控系统,它提供了一系列强大的功能来帮助我们监控应用的状态和性能.
WatchDog 利用 SignalR 实现了实时监控,并使用LiteDb作为无需配置的类似MongoDB的服务器端数据库,同时也支持使用外部数据库(如MSSQL、MySQL、PostgreSQL、MongoDB).
.NET Core 3.1 及更高版本.
通过下载源码,可以进行学习和应用,具体操作如下图所示:
搜索 WatchDog.NETNuGet包进行安装,具体如下图所示:
在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>(); });
在主要的WatchDog中间件之前添加异常日志记录器,最好将其放置在中间件的最上面,以便捕捉可能的早期异常.
app.UseWatchDogExceptionLogger(); ... app.UseWatchDog(opt => { opt.WatchPageUsername = "admin"; opt.WatchPagePassword = "Qwerty@123"; ... });
该功能可在特定时间后自动清除日志.
注意:当IsAutoClear设置为true时,默认的清除计划时间为每周.
如需覆盖默认设置,请按照以下方式进行配置:
services.AddWatchDogServices(opt => { opt.IsAutoClear = true; opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly; });
将日志记录到数据库,如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; });
app.UseWatchDog(opt => { opt.WatchPageUsername = "admin"; opt.WatchPagePassword = "Qwerty@123"; });
注意:如果你的项目使用权限验证,那么 app.UseWatchDog(); 应该在 app.UseRouting(), app.UseAuthentication(), 和 app.UseAuthorization() 之后按顺序添加.
示例配置 。
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; });
WatchLogger.Log("...Test Log..."); WatchLogger.LogWarning(JsonConvert.Serialize(model)); WatchLogger.LogError(res.Content, eventId: reference);
启动服务器并访问 /watchdog 来查看日志.
示例:
https://myserver.com/watchdog https://localhost:[your-port]/watchdog
Github:https://github.com/IzyPro/WatchDog 。
WatchDog 是一款强大且易于使用的.NET开源实时应用监控系统。通过使用WatchDog,我们可以轻松实现对.NET应用的实时监控,提高应用的稳定性和可靠性。希望这篇文章能够帮助你更好地理解和使用WatchDog.
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言.
也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长! 。
最后此篇关于.NET开源实时监控系统-WatchDog的文章就讲到这里了,如果你想了解更多关于.NET开源实时监控系统-WatchDog的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我安装了看门狗,但尝试运行任何代码都不起作用。我收到那个错误信息。这是代码片段。有想法该怎么解决这个吗? 最佳答案 嗯,这是使用 Python 包时一个非常古老和常见的问题。您将文件命名为 watch
前言 在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间。 本文将介绍一个名为
在python中文件监控主要有两个库,一个是pyinotify ( https://github.com/seb-m/pyinotify/wiki),一个是watchdog(http://pytho
项目介绍 WatchDog是一个开源(MIT License)、免费、针对ASP.Net Core Web应用程序和API的实时应用监控系统。开发者可以实时记录和查看他们的应用程序中的消息、事件、H
我有一个简单的 Watchdog 和 Queue 进程来监视目录中的文件。 代码取自 https://camcairns.github.io/python/2017/09/06/python_watc
来自Watchdog Quickstart ,我可以看到所有事件,例如修改文件夹、删除文件、创建文件等。但是,我只想查看文件何时创建。我必须更改什么才能只看到创建的文件? import sys imp
我正在使用看门狗来监视目录(和子目录)中创建的文件。如果创建的文件是 .csv,程序将读取它们(并对文件进行一些小的更改,但这实际上不是问题的一部分)。问题是有时 readlines() 返回一个空列
在 Ubuntu 上运行,每次我创建一个文件时,我都会得到一个修改和创建的事件。 这是设计使然还是我做错了什么? 我正在使用事件处理程序类 PatternMatchingEventHandler ev
使用/dev/watchdog 似乎只对监视另一个进程有效,因为在编译内核时没有设置 CONFIG_WATCHDOG_NOWAYOUT 选项,监视/看门狗进程中的崩溃将导致操作系统清理并关闭文件。从而
系统启动过程图: framework层所有的service都是运行在systemserver进程中;systemserver进程是由zygote进程创建。 systemserver进程
我正在运行以下代码,该代码在 Python 中实现 WatchDog 来监视文件更改。我试图跟踪日志文件 (DoNotDelete.txt) 中的所有更改,因此我试图忽略代码中的此 DoNotDele
我无法使用设备/dev/watchdog,因为有东西正在使用它。 echo 1 > /dev/watchdog -> Ressource busy 测试(以 root 身份): ls crw-rw-r
每次修改某个文件时,我都尝试启动一个 python 脚本。准确地说,我在 Raspberry Pi 的串行端口上有一个设备,它将数据写入文本文件 (test.txt)。我已经尝试过这两种工具 - Wa
我正在尝试实现大致如下所示的服务关系: {ACTIVITY} -> {SERVICE1} -> {SERVICE2} ACTIVITY 启动 SERVICE1,然后启动 SERVICE2。 SERVI
我有系统服务。我想为此实现一个看门狗。 就像 [Unit] Description=Watchdog example service [Service] Type=notify Environment
我正在实现一个 ruby 服务器来处理从 GPRS 模块创建的套接字。问题是当模块掉电时,没有迹象表明 socket 已关闭。 我正在做线程来处理同一个服务器的多个套接字。我要问的是:有没有办法在
我不想启用 linux onedrive 服务,因为我注意到它对我的 cpu 来说很吃力,所以我宁愿按需运行它。这就是为什么我试图创建一个小脚本,仅当我访问 OneDrive 目录时才会运行一次 on
我一直在使用 tkinter 组合看门狗模块来处理一些上传请求。大多数时候它工作正常,但有时我们的网络驱动器会不稳定并断开连接一段时间。但是我无法找到捕获此错误的正确位置。 from watchdog
我是这个论坛的新手,想请教专家一个问题。我写了下面的程序(一个更大的东西的一部分,但这是给我带来麻烦的代码) #include #include int main() { int fd;
我对使用 iOS 崩溃日志有些陌生 - 我非常熟悉基于应用程序的崩溃日志,因为它们很容易被符号化,但我仍在尝试弄清楚如何读取生成的日志看门狗超时。明确地说,这些超时是由我正在编写的通知中心小部件引起的
我是一名优秀的程序员,十分优秀!