Solo.Beacon 1.0.0-pre-doc4847-03

Solo.Beacon

Solo.Beacon — это переиспользуемый ASP.NET Core пакет для сервисов ft-soft. Он предоставляет:

  • endpoint /beacon/discovery, который публикует реальные пути health и stats для сервиса
  • endpoint /beacon/health, который отвечает 200 OK на любой HTTP-метод
  • endpoint /beacon/stats для состояния текущего сервиса
  • возможность включать или отключать логирование запросов к /discovery, /health и /stats одним общим флагом
  • опциональный фоновый опрос зависимых сервисов с обработкой результатов через delegate

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

using Solo.Beacon;

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddBeacon()
    .AddBeaconHealthMonitoring(
        static async (serviceProvider, responses, cancellationToken) =>
        {
            var cache = serviceProvider.GetRequiredService<IMonitoringCache>();
            await cache.StoreAsync(responses, cancellationToken);
        });

var app = builder.Build();

app.MapBeacon()
    .MapHealth()
    .MapStats();

Если нужен собственный payload /stats, можно передать один async-handler в MapStats(...). В нем доступны HttpContext и CancellationToken, так что состав статистики можно настраивать в зависимости от пользователя, заголовков и других деталей запроса.

app.MapBeacon()
    .MapHealth()
    .MapStats(async (httpContext, cancellationToken) =>
    {
        var statsProvider = httpContext.RequestServices.GetRequiredService<StatsProvider>();
        var stats = await statsProvider.GetStatsAsync();
        var userName = httpContext.User.Identity?.Name;

        return Task.FromResult<IResult>(TypedResults.Ok(new
        {
            stats,
            userName,
        }));
    });

По умолчанию endpoint вернет только timestamp генерации ответа текущего сервиса.

Конфигурация

{
  "Beacon": {
    "LoggingEnabled": false,
    "HealthUrl": "/beacon/health",
    "StatsUrl": "/beacon/stats",
    "Monitoring": {
      "Enabled": true,
      "ProbeInterval": "00:00:30",
      "RequestTimeout": "00:00:05",
      "Services": [
        "https://solo-butler.ru",
        "https://solo.ru/solo",
        "https://solo.ru/org"
      ]
    }
  }
}

Примечания

  • /stats всегда закрыт авторизацией и использует стандартное поведение ASP.NET Core, настроенное в хост-приложении.
  • Чтобы в HttpContext.User были данные пользователя, хост-приложение должно само настроить аутентификацию обычным для себя способом.
  • /beacon/discovery всегда захардкожен и не настраивается через конфиг.
  • Пути endpoint-ов и общий флаг логгирования можно полностью задать через SoloBeacon в конфиге, без обязательных lambda-настроек в Program.cs.

No packages depend on Solo.Beacon.

.NET 8.0

  • No dependencies.

Version Downloads Last updated
1.0.0 3 05/28/2026
1.0.0-pre-doc4847-07 2 05/19/2026
1.0.0-pre-doc4847-06 2 05/19/2026
1.0.0-pre-doc4847-05 2 05/19/2026
1.0.0-pre-doc4847-04 2 05/19/2026
1.0.0-pre-doc4847-03 2 05/18/2026
1.0.0-pre-doc4847-02 2 05/18/2026
1.0.0-pre-doc4847-01 2 05/18/2026