feat: add Prometheus metrics for API

This commit is contained in:
spiral
2022-03-23 20:09:25 -04:00
parent 0bad2e8ff9
commit d097436f3e
4 changed files with 147 additions and 13 deletions

View File

@@ -1,4 +1,6 @@
using App.Metrics;
using App.Metrics.AspNetCore;
using App.Metrics.Formatters.Prometheus;
using Autofac.Extensions.DependencyInjection;
@@ -10,8 +12,15 @@ namespace PluralKit.API;
public class Program
{
public static IMetricsRoot _metrics { get; set; }
public static async Task Main(string[] args)
{
_metrics = AppMetrics.CreateDefaultBuilder()
.OutputMetrics.AsPrometheusPlainText()
.OutputMetrics.AsPrometheusProtobuf()
.Build();
InitUtils.InitStatic();
await BuildInfoService.LoadVersion();
var host = CreateHostBuilder(args).Build();
@@ -22,7 +31,18 @@ public class Program
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseMetrics()
.ConfigureMetrics(_metrics)
.UseMetricsWebTracking()
.UseMetricsEndpoints()
.UseMetrics(
options =>
{
options.EndpointOptions = endpointsOptions =>
{
endpointsOptions.MetricsTextEndpointOutputFormatter = _metrics.OutputMetricsFormatters.OfType<MetricsPrometheusTextOutputFormatter>().First();
endpointsOptions.MetricsEndpointOutputFormatter = _metrics.OutputMetricsFormatters.OfType<MetricsPrometheusProtobufOutputFormatter>().First();
};
})
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.UseSerilog()
.ConfigureWebHostDefaults(whb => whb