Health monitoring and diagnostics extension for WorkflowForge providing comprehensive health checks, dependency monitoring, and system status reporting for production workflows.
$ dotnet add package WorkflowForge.Extensions.Observability.HealthChecksComprehensive health monitoring extension for WorkflowForge applications with built-in and custom health checks.
dotnet add package WorkflowForge.Extensions.Observability.HealthChecks
using WorkflowForge.Extensions.Observability.HealthChecks;
// Create foundry and create a health check service
using var foundry = WorkflowForge.CreateFoundry("MyWorkflow");
var healthService = foundry.CreateHealthCheckService(TimeSpan.FromSeconds(30));
// Execute health checks
var results = await healthService.CheckHealthAsync();
Console.WriteLine($"Overall Status: {healthService.OverallStatus}");
foreach (var (name, result) in results)
{
Console.WriteLine($"{name}: {result.Status} - {result.Description}");
}
// Automatically included when using CreateHealthCheckService():
// - Memory Health Check (working set, managed memory)
// - Garbage Collector Health Check (GC performance)
// - Thread Pool Health Check (thread availability)
var overallStatus = await foundry.CheckFoundryHealthAsync(healthService);
public class DatabaseHealthCheck : IHealthCheck
{
public string Name => "Database";
public string Description => "Checks database connectivity";
public async Task<HealthCheckResult> CheckHealthAsync(CancellationToken cancellationToken = default)
{
try
{
await _connection.OpenAsync(cancellationToken);
return HealthCheckResult.Healthy("Database connection successful");
}
catch (Exception ex)
{
return HealthCheckResult.Unhealthy("Database connection failed", ex);
}
}
}
// Register custom health check
healthService.RegisterHealthCheck(new DatabaseHealthCheck(dbConnection));
// Enable automatic health monitoring every 30 seconds
var healthService = foundry.CreateHealthCheckService(TimeSpan.FromSeconds(30));
// Access latest results anytime
var lastResults = healthService.LastResults;
var currentStatus = healthService.OverallStatus;Keep your workflows healthy