Общая настройка DealTracingHosting (Deal.Grpc.Hosting + Deal.Api): AspNetCore/Http/GrpcNetClient инструментация, OTLP-экспорт во внешний коллектор, имя сервиса из env. Логи обогащаются TraceId/SpanId.
38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
//
|
|
|
|
using Deal.Grpc.Hosting.Interceptors;
|
|
using Deal.Grpc.Hosting.Models;
|
|
using Deal.Grpc.Hosting.Options;
|
|
using Deal.Grpc.Hosting.Services;
|
|
using Deal.Telegram;
|
|
|
|
const int defaultGrpcPort = 5101;
|
|
const string telegramProcessName = "telegram";
|
|
|
|
int grpcPort = GrpcHostEnvironment.ResolveGrpcPort(defaultGrpcPort);
|
|
int metricsPort = DealMetricsHosting.ResolveMetricsPort(DealMetricsHosting.DefaultMetricsPort);
|
|
|
|
WebApplication app = TelegramServiceHost.Create(
|
|
grpcPort,
|
|
configureBuilder: builder =>
|
|
{
|
|
DealLogging.Configure(builder, telegramProcessName);
|
|
DealMetricsHosting.AddDealMetrics(builder, metricsPort);
|
|
DealTracingHosting.AddDealTracing(builder, telegramProcessName);
|
|
});
|
|
|
|
DealMetricsHosting.MapDealMetrics(app);
|
|
|
|
MtlsOptions mtlsOptions = MtlsOptions.FromConfiguration(app.Configuration);
|
|
|
|
// Fail-closed (замечание code-review): отсутствие/опечатка DEAL_MTLS_ENABLED не должны давать
|
|
// «тихого» plaintext в Production; Development (и прочие не-prod окружения) — как раньше.
|
|
GrpcHostEnvironment.RequireMtlsInProduction(mtlsOptions);
|
|
|
|
app.Logger.LogInformation(
|
|
"telegram-service стартует: gRPC {Transport} 0.0.0.0:{Port} (health /grpc.health.v1.Health/Check)",
|
|
mtlsOptions.Enabled ? "mTLS (TLS + клиентский сертификат)" : "plaintext + service-token",
|
|
grpcPort);
|
|
|
|
await app.RunAsync();
|