Reo.Core.HealthCheck 10.0.350

dotnet add package Reo.Core.HealthCheck --version 10.0.350
                    
NuGet\Install-Package Reo.Core.HealthCheck -Version 10.0.350
                    
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="Reo.Core.HealthCheck" Version="10.0.350" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.HealthCheck" Version="10.0.350" />
                    
Directory.Packages.props
<PackageReference Include="Reo.Core.HealthCheck" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Reo.Core.HealthCheck --version 10.0.350
                    
#r "nuget: Reo.Core.HealthCheck, 10.0.350"
                    
#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.
#:package Reo.Core.HealthCheck@10.0.350
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Reo.Core.HealthCheck&version=10.0.350
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.HealthCheck&version=10.0.350
                    
Install as a Cake Tool

Reo.Core.HealthCheck

Описание пакета

Пакет Reo.Core.HealthCheck предоставляет инструменты для реализации и интеграции проверок работоспособности (health checks) в приложениях на основе ASP.NET Core. Он позволяет:

  • Создавать кастомные проверки состояния сервисов.
  • Агрегировать результаты множества проверок для оценки общего состояния кластера.
  • Интегрировать с интерфейсом проверок состояния (Health Checks UI).
  • Проверять наличие зарегистрированных проверок в контейнере зависимостей.

Решаемая проблема: Упрощение реализации сложных сценариев мониторинга состояния сервисов в распределённых системах.


Основные компоненты

  1. AbstractClusterHealthCheck

    • Абстрактный класс для реализации проверок, агрегирующих результаты множества IHealthCheck.
    • Определяет логику оценки состояния кластера на основе количества здоровых узлов.
  2. EndpointRouteBuilderExtensions

    • Методы расширения для добавления эндпоинта /hc с поддержкой интерфейса проверок состояния (Health Checks UI).
  3. ServiceCollectionExtensions

    • Утилиты для проверки наличия зарегистрированных проверок в IServiceCollection.

Требования

  • .NET версия: 8.0
  • Зависимости:
    • AspNetCore.HealthChecks.UI.Client
    • System.Text.Json
    • Microsoft.EntityFrameworkCore

Установка

# Через NuGet Package Manager
Install-Package Reo.Core.HealthCheck

# Через .NET CLI
dotnet add package Reo.Core.HealthCheck

Настройка

Регистрация проверок в ASP.NET Core

  1. Добавьте проверку в контейнер зависимостей:

    services.AddHealthChecks()
        .AddCheck("custom-check", new CustomHealthCheck());
    
  2. Используйте AbstractClusterHealthCheck для агрегации:

    public class CustomClusterHealthCheck : AbstractClusterHealthCheck
    {
        public CustomClusterHealthCheck(IEnumerable<IHealthCheck> healthChecks)
            : base(healthChecks) { }
    }
    
  3. Настройте эндпоинт проверок:

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapDefaultHealthCheck();
    });
    

Использование

Пример 1: Создание кастомной проверки

public class DatabaseHealthCheck : IHealthCheck
{
    public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
    {
        // Логика проверки подключения к БД
        return HealthCheckResult.Healthy();
    }
}

Пример 2: Агрегация результатов

var healthChecks = new List<IHealthCheck>
{
    new DatabaseHealthCheck(),
    new CustomHealthCheck()
};

var clusterCheck = new CustomClusterHealthCheck(healthChecks);

Пример 3: Проверка наличия зарегистрированной проверки

if (services.IsExistHealthCheck("custom-check"))
{
    Console.WriteLine("Проверка 'custom-check' уже зарегистрирована.");
}

Лицензия

Данный пакет распространяется под лицензией MIT.

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