Introducing Heartbeats

Time for some exciting news from your friends at elmah.io. Introducing elmah.io Heartbeats.

We don't just want to be your go-to tool when needing to monitor web applications. All companies use a combination of tools and frameworks to create business value for their customers. Windows services, Scheduled tasks, Azure Functions, Hangfire jobs, Quartz.NET, etc. are all frequently used tools. With elmah.io Heartbeats, we provide monitoring for exactly that line of tools.

With elmah.io error monitoring and logging, you have always had the possibility of logging and monitoring errors in tasks and services. But what happens when your scheduled task doesn't run or someone accidentally stopped one of your Windows services or Azure Functions? With elmah.io Heartbeats, you set up an expected interval and grace period and elmah.io will automatically verify that your task or service runs as expected. All you need to do is to notify elmah.io when your task or service is running using either one of the integrations or using the client/API. There are integrations for popular frameworks like Hangfire, Azure Functions, ASP.NET Core, and Umbraco.

Check out elmah.io Heartbeats in action:


Let me introduce you to one of the already popular integrations for elmah.io Heartbeats. Using the Elmah.Io.AspNetCore.HealthChecks package you can instruct your ASP.NET Core application to run a set of health checks every hour and notify elmah.io Heartbeats. Start by creating a new Heartbeat:

Next, install the NuGet package:

Install-Package Elmah.Io.AspNetCore.HealthChecks

Enable Health Checks with ASP.NET Core and include the publisher for elmah.io Heartbeats:

services
    .AddHealthChecks()
    .AddElmahIoPublisher(options =>
    {
        options.ApiKey = "API_KEY";
        options.LogId = new Guid("LOG_ID");
        options.HeartbeatId = "HEARTBEAT_ID";
    });

You probably already know how to find the values of API_KEY and LOG_ID. Each heartbeat has a unique Id available on the Instructions page on elmah.io. Replace HEARTBEAT_ID with the Id from your newly created heartbeat.

Finally, tell ASP.NET Core how often to run health checks:

services.Configure<HealthCheckPublisherOptions>(options =>
{
    options.Period = TimeSpan.FromHours(1);
});

That's it. Your ASP.NET Core application will now automatically run a health check every hour and send the result to elmah.io Heartbeats. If we receive a failing report or no report at all, we will automatically create an error in your normal error log. Whatever notification method you have already set up works without needing any additional configuration.

This is a simple example of the strengths of elmah.io Heartbeats. As already mentioned we provide integrations with popular frameworks like Hangfire and Azure Functions. Check out the documentation site for all the details. If you want to learn more, check out the elmah.io Heartbeats features page. We already see elmah.io Heartbeats cover a need for the users who have been part of the beta.