Define "health checks" for your applications, resources and infrastructure. Keep your Warden on the watch.
Warden uses the fluent configuration API to define a set of watchers that are responsible for performing a check (monitoring) on the selected resources. On top of that you may use the integrations to connect to the external services and for example easily send an email.
Warden can be used in any .NET application (Console, WPF, Web etc.), however, the most typical example would probably be some kind of background service (e.g. Windows Service) that works all the time, therefore, is able to monitor 24/7 the defined resources.
The main purpose of the Warden is to provide an easy, yet customizable way to quickly build a service that will be responsible for monitoring your system and infrastructure. It's simple and lightweight library, but powerful enough to handle the most common scenarios such as notifying about failures, exceptions, successful checks and more. On top of that, you can build your custom metrics using the specialized types of responses returned by each watcher, and make use of that data to store and visualize e.g. the uptime and downtime of your system.
Warden makes use of the asynchronous methods. It does not possess any external reference or dependency. Each watcher is an independent package that can be easily configured and plugged in and is built on top of the common IWatcher interface that exposes a single method. It's quite easy to build a custom watcher if you feel a need to attach your own specific logic for some resource.
Available as a NuGet package.
dotnet add package Warden
Watchers and integrations are available as a separate NuGet packages listed here.
Please browse the source code, examples can be found under the Warden.Examples namespace, such as the Warden.Examples.Console or Warden.Examples.WindowsService.