Add metrics

This commit is contained in:
2023-10-05 22:49:44 +01:00
parent 7c60fefd4a
commit b93fa4bc0f
2 changed files with 15 additions and 9 deletions

View File

@ -48,5 +48,6 @@
</PackageReference>
<PackageReference Include="Nostr.Client" Version="1.4.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.4" />
<PackageReference Include="prometheus-net.AspNetCore" Version="8.0.1" />
</ItemGroup>
</Project>

View File

@ -10,6 +10,7 @@ using NostrStreamer.Services.Background;
using NostrStreamer.Services.Dvr;
using NostrStreamer.Services.StreamManager;
using NostrStreamer.Services.Thumbnail;
using Prometheus;
namespace NostrStreamer;
@ -21,7 +22,7 @@ internal static class Program
var services = builder.Services;
var config = builder.Configuration.GetSection("Config").Get<Config>();
ConfigureDb(services, builder.Configuration);
services.AddCors();
services.AddMemoryCache();
@ -29,11 +30,11 @@ internal static class Program
services.AddRazorPages();
services.AddControllers().AddNewtonsoftJson();
services.AddSingleton(config);
// GeoIP
services.AddSingleton<IGeoIP2DatabaseReader>(_ => new DatabaseReader(config.GeoIpDatabase));
services.AddTransient<EdgeSteering>();
// nostr auth
services.AddTransient<NostrAuthHandler>();
services.AddAuthentication(o =>
@ -49,14 +50,14 @@ internal static class Program
new ClaimsAuthorizationRequirement(ClaimTypes.Name, null)
}, new[] {NostrAuth.Scheme});
});
// nostr services
services.AddSingleton<NostrMultiWebsocketClient>();
services.AddSingleton<INostrClient>(s => s.GetRequiredService<NostrMultiWebsocketClient>());
services.AddSingleton<NostrListener>();
services.AddHostedService<NostrListenerLifetime>();
services.AddTransient<ZapService>();
// streaming services
services.AddTransient<SrsApi>();
services.AddHostedService<BackgroundStreamManager>();
@ -69,11 +70,11 @@ internal static class Program
services.AddTransient<IThumbnailService, S3ThumbnailService>();
services.AddHostedService<ThumbnailGenerator>();
services.AddTransient<IDvrStore, S3DvrStore>();
// lnd services
services.AddSingleton<LndNode>();
services.AddHostedService<LndInvoicesStream>();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
@ -82,14 +83,18 @@ internal static class Program
await db.Database.MigrateAsync();
}
app.UseRouting();
app.UseCors(o => o.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
app.UseHttpMetrics();
app.UseAuthorization();
app.MapRazorPages();
app.MapControllers();
app.MapMetrics();
await app.RunAsync();
}
private static void ConfigureDb(IServiceCollection services, IConfiguration configuration)
{
services.AddDbContext<StreamerContext>(o => o.UseNpgsql(configuration.GetConnectionString("Database")));
@ -108,4 +113,4 @@ internal static class Program
return dummyHost;
}
}
}