AspNetCore.Live.Api.HealthChecks.Server 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package AspNetCore.Live.Api.HealthChecks.Server --version 1.0.0
NuGet\Install-Package AspNetCore.Live.Api.HealthChecks.Server -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AspNetCore.Live.Api.HealthChecks.Server" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AspNetCore.Live.Api.HealthChecks.Server --version 1.0.0
#r "nuget: AspNetCore.Live.Api.HealthChecks.Server, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AspNetCore.Live.Api.HealthChecks.Server as a Cake Addin
#addin nuget:?package=AspNetCore.Live.Api.HealthChecks.Server&version=1.0.0

// Install AspNetCore.Live.Api.HealthChecks.Server as a Cake Tool
#tool nuget:?package=AspNetCore.Live.Api.HealthChecks.Server&version=1.0.0

Real-Time Api Health Check Monitoring

The Asp Net Core Web Api has a Health Checks system built into it.

This project taps into that system & makes the generated Health Report,

available to Monitoring client applications, in real-time.

The Client package, installed in the Api, runs the Health Check periodically,

and uploads the generated Health Report to the Server SignalR Hub.

The Hub generates sends a push notification to the connected clients,

notifying them of the Health Report in real-time.

Server

You can use a Console app as a Health Checks Server.

Just create one with Web Sdk (project file):

<Project Sdk="Microsoft.NET.Sdk.Web">

Then, plug in the Server package.

var builder = WebApplication.CreateBuilder();

builder.Services.AddSignalR();
builder.Services.AddLiveHealthChecksServer(settings => settings.SecretKey = "43bf0968-17e0-4d22-816a-6eaadd766692");

var app = builder.Build();

app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<LiveHealthChecksHub>("/livehealthcheckshub");
});

app.Run();

Asp Net Core Api

In your Api add the Client Nuget package.

then

//Required - add all your health checks
services.AddHealthChecks();

services.AddLiveHealthChecksClient(settings =>
{
    settings.HealthCheckIntervalInMinutes = 60;
    settings.ReceiveMethod = "SampleApiHealth";
    settings.HealthCheckServerHubUrl = "https://localhost:5001/livehealthcheckshub";
    settings.SecretKey = "43bf0968-17e0-4d22-816a-6eaadd766692";
});

The ReceiveMethod is what the SignalR method that Monitoring app needs to listen to.

The SecretKey must be the same between Server & Api.

The Server sends the Health Report as a real-time push notification.

Monitoring app

In your Monitoring app, create a SignalR connection to the Server Hub.

Then, start listening to the set ReceiveMethod ie "SampleApiHealth".

var connection = new HubConnectionBuilder()
                        .WithUrl("https://localhost:5001/livehealthcheckshub")
                        .WithAutomaticReconnect()
                        .Build();

connection.On("SampleApiHealth", new Type[] {typeof(object), typeof(object)},
    (arg1, arg2) =>
    {
        Console.WriteLine(arg1[0]);
        return Task.CompletedTask;
    }, new object());

await connection.StartAsync();

Sample Monitoring App

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 110 3/17/2024
1.6.2 227 11/13/2023
1.6.1 129 10/2/2023
1.6.0 171 8/21/2023
1.5.0 177 7/24/2023
1.4.1 171 7/17/2023
1.4.0 170 7/10/2023
1.3.0 165 7/3/2023
1.2.0 172 6/26/2023
1.1.0 172 6/15/2023
1.0.0 161 6/13/2023

Initial release