Solo.Beacon 1.0.0
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
- стартовую health-проверку зависимостей сразу после запуска приложения
Использование
using Solo.Beacon;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddBeacon();
var app = builder.Build();
app.MapBeacon()
.MapHealth();
Если нужен /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 TypedResults.Ok(new
{
stats,
userName,
});
});
По умолчанию endpoint вернет только timestamp генерации ответа текущего сервиса.
Если нужно переопределить настройки пакета кодом, используйте перегрузку с Action<BeaconOptions>:
builder.Services.AddBeacon(options =>
{
options.LoggingEnabled = true;
options.HealthUrl = "/health";
options.StatsUrl = "/stats";
});
Если нужно обработать результаты мониторинга зависимостей, настройте handler через BeaconBuilder:
builder.Services
.AddBeacon()
.AddMonitoringHandler(
static async (serviceProvider, responses, cancellationToken) =>
{
var cache = serviceProvider.GetRequiredService<IMonitoringCache>();
await cache.StoreAsync(responses, cancellationToken);
});
Конфигурация
{
"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"
]
}
}
}
Если мониторинг включен, пакет сразу после старта приложения делает первый проход по Services: запрашивает /beacon/discovery, находит опубликованный health endpoint и проверяет его доступность. Успешный стартовый проход и ошибки пишутся в лог только при LoggingEnabled = true.
AddBeacon() сам регистрирует monitoring-инфраструктуру. Публичный вход для регистрации пакета ограничен двумя вариантами: базовый вызов и кодовая настройка через Action<BeaconOptions>. Кастомный BeaconMonitoringHandler задается через UseMonitoringHandler(...).
Примечания
/statsвсегда закрыт авторизацией и использует стандартное поведение ASP.NET Core, настроенное в хост-приложении.- Чтобы в
HttpContext.Userбыли данные пользователя, хост-приложение должно само настроить аутентификацию обычным для себя способом. /beacon/discoveryвсегда захардкожен и не настраивается через конфиг.- Пути endpoint-ов и общий флаг логгирования можно полностью задать через
SoloBeaconв конфиге, без обязательных lambda-настроек вProgram.cs. - Если
healthendpoint зависимого сервиса возвращает не JSON,Solo.Beaconсформирует служебный payload со статусом проверки. 404 Not Foundна/beacon/discoveryтрактуется как отсутствие поддержкиSolo.Beaconу зависимого сервиса и логируется в общем формате сообщений мониторинга.
No packages depend on Solo.Beacon.
.NET Standard 2.1
- Microsoft.AspNetCore.Authentication.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Authentication.Core (>= 2.3.9)
- Microsoft.AspNetCore.Authorization (>= 2.3.0)
- Microsoft.AspNetCore.Authorization.Policy (>= 2.3.9)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.Hosting (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.8)
- System.Text.Json (>= 10.0.0)
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.0 | 2 | 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 |