Health checks enable services to report their operational status to external systems like load balancers and monitors. Through endpoints such as liveness, readiness, and startup checks, applications can signal their ability to process requests. This proactive monitoring detects failures early, minimizes downtime, optimizes resources, and enhances system resilience—especially critical in distributed systems and microservices.
Nomirun Host comes with 3 health check endpoints for validating different states.
This health check endpoint is built-in the Nomirun host, and it’s located at /startup endpoint.
If a Nomirun Host has successfully started and loaded the startup health check code then the /startup endpoint will
return 200 HTTP status code.
This health check endpoint is built-in the Nomirun host, and it’s located at /liveness endpoint.
Liveness endpoint is hooking into IHostApplicationLifetime instance and validates if the Nomirun Host application is
running or not. In case it’s running the /liveness endpoint will return 200 HTTP status code.
It is located at /readiness endpoint of the Nomirun Host. It is the health check that checks all registered
infrastructure dependencies (like cloud services, SQL servers, WEB servers, …) that are configured with Readiness
tag.
Nomirun Host comes with /status endpoint as well, where you can see details of Readiness health checks:
{
"app": "Nomirun",
"version": "1.1.2.0",
"status": "Healthy",
"results": {
"Service Startup": {
"status": "Healthy",
"time": "0,9682 ms"
},
"Self Test": {
"status": "Healthy",
"time": "0,524 ms"
}
}
}Nomirun Host by default does not contain any infrastructure Readiness health checks, but it is something you can add
to your module. Below is an example for Postgresql database health check:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
namespace MyModule.HealthChecks;
public static class HealthCheckExtensions
{
public static void AddPostgreSqlHealthChecks(this IServiceCollection services,
string connectionString, string databaseName)
{
services.AddHealthChecks()
.AddNpgSql(connectionString,
"SELECT 1;",
null,
$"PostgreSQL Server - {databaseName}",
HealthStatus.Unhealthy,
new[] { "postgresql", HealthCheckProbeType.Readiness },
TimeSpan.FromSeconds(5));
}
}Make sure you add 2 Nuget packages:
<PackageReference Include="AspNetCore.HealthChecks.NpgSql" Version="9.0.0" />
<PackageReference Include="Npgsql" Version="9.0.3" />And then register it in the Startup.cs:
services.AddPostgreSqlHealthChecks("<connectionstring>", "Demo");When you run the module and go to /status endpoint, you will see something like this:
{
"app": "Nomirun",
"version": "1.1.2.0",
"status": "Healthy",
"results": {
"PostgreSQL Server - Demo": {
"status": "Healthy",
"time": "2,4702 ms"
},
"Service Startup": {
"status": "Healthy",
"time": "0,9682 ms"
},
"Self Test": {
"status": "Healthy",
"time": "0,524 ms"
}
}
}