Skip to content
Define "health checks" for your applications, resources and infrastructure. Keep your Warden on the watch.
Branch: master
Clone or download

Latest commit

Latest commit d2e93ff Feb 16, 2018


Type Name Latest commit message Commit time
Failed to load latest commit information.
src/Warden Closed #150 .netstandard2.0 migration Feb 15, 2018
tests/Warden.Tests Closed #150 .netstandard2.0 migration Feb 15, 2018
.gitignore Added .vscode/ to the .gitignore file. Sep 15, 2016 Fixed SendGrid integration, added contribution guidelines Nov 6, 2016
LICENSE Initial commit Mar 4, 2016 Updated docs Feb 16, 2018



Build status

Define "health checks" for your applications, resources and infrastructure. Keep your Warden on the watch.

What is Warden?

Warden is a simple, cross-platform library, built to solve the problem of monitoring the resources such as the websites, API, databases, CPU etc.

It allows to quickly define the watchers responsible for performing checks on specific resources and integrations to easily notify about any issues related to the possible downtime of your system.

Each watcher might have its own custom interval. For example you may want to check e.g. the API availability every 500 milliseconds, while the database should respond only every 10 seconds and so on. Or you could just set the common one interval (5 seconds by default) for all of the watchers.

On top of that, you may use all of this information to collect the custom metrics thanks to the hooks.


  • Migrate fully to the .NET Core (NET Standard).
  • Move all of the extensions (Wardens and Integrations) into the separate repositiories.
  • Apply new features.

What kind of monitoring is available?

What are the integrations with external services?

How can I see what's happening with my system?

You can make use of the Web Panel which provides the UI for organizing your monitoring workspace, dashboard with real-time statistics and the storage of the historical data. If you don't want to host it on your own, there's an online version available, running in the Azure cloud at

Is there any documentation?

Yes, please navigate to the wiki page where you can find detailed information about configuring and running the Warden.


Available as a NuGet package.

dotnet add package Warden

Watchers and Integrations are available as a separate NuGet packages listed here.

Quick start:

Configure the Warden by adding the watchers and setting up the hooks and integrations to get notified about failures, successful checks, exceptions etc. - use that information e.g. in order to let your system administrator know when something goes wrong or to build your custom metrics.

var configuration = WardenConfiguration
    .AddMongoDbWatcher("mongodb://localhost:27017", "MyDatabase", cfg =>
        cfg.WithQuery("Users", "{\"name\": \"admin\"}")
           .EnsureThat(users => users.Any(user => user.role == "admin"));
    .IntegrateWithSendGrid("api-key", "", cfg =>
        cfg.WithDefaultSubject("Monitoring status")
    .SetGlobalWatcherHooks(hooks =>
        hooks.OnStart(check => GlobalHookOnStart(check))
             .OnCompleted(result => GlobalHookOnCompleted(result));
    .SetAggregatedWatcherHooks((hooks, integrations) =>
        hooks.OnFirstFailureAsync(results => 
                integrations.SendGrid().SendEmailAsync("Monitoring errors have occured."))
             .OnFirstSuccessAsync(results => 
                integrations.SendGrid().SendEmailAsync("Everything is up and running again!"));
    .SetHooks(hooks =>
        hooks.OnIterationCompleted(iteration => OnIterationCompleted(iteration))
             .OnError(exception => Logger.Error(exception));

Start the Warden and let him do his job - now you have the full control over your system monitoring!

var warden = WardenInstance.Create(configuration);
await warden.StartAsync();

Please check out the examples by cloning the repository.


Want to contribute? Please check the contribution guidelines.

You can’t perform that action at this time.