Skip to content

affecto/dotnet-Middleware.Monitoring.Owin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monitoring.Owin

Build status

Build status

Monitoring middleware code examples (using Autofac)

Middleware is registered on per-route basis using shallow and deep endpoints (route/_monitor/shallow and route/_monitor/deep respectively). Shallow endpoint performs a quick check, while deep endpoint uses a IHealthCheckService which implements a CheckHealthAsync method. This method is used for deeper monitoring, e.g. database status checking. Both shallow and deep routes return HTTP 204. In case of exception during deep check, HTTP 503 is returned.

Extending monitoring middleware

using Affecto.Middleware.Monitoring.Owin;
using Microsoft.Owin;
// ...other dependencies

internal class SearchMonitoringMiddleware : MonitoringMiddleware
{
    public SearchMonitoringMiddleware(OwinMiddleware next, IComponentContext container)
        : base (next, "/my-route", container.Resolve<Func<IHealthCheckService>>())
        {
        }
}

Implementing health check service for deep endpoint

using Affecto.Middleware.Monitoring.Owin;
// ...other dependencies

internal class SearchHealthCheckService : IHealthCheckService
{
    public Task CheckHealthAsync()
    {
        // perform deep check to e.g. database
    }
}

Registering middleware

// ...dependencies

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var builder = new ContainerBuilder();

        builder.RegisterType<SearchHealthCheckService>().As<IHealthCheckService>();
        builder.RegisterType<SearchMonitoringMiddleware>();

        // if you need multiple middleware with different health check service, use named registering, like:
        // builder.RegisterType<SearchHealthCheckService>().Named<IHealthCheckService>(SearchHealthCheckService.ServiceKey);

        IContainer container = builder.Build();
        app.UseAutofacMiddleware(container);
    }
}

About

Monitoring middleware implementation based on OWIN interface defined in Microsoft.Owin NuGet.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages