feat: add Prometheus metrics for API

This commit is contained in:
spiral 2022-03-23 20:09:25 -04:00
parent 0bad2e8ff9
commit d097436f3e
No known key found for this signature in database
GPG key ID: 244A11E4B0BCF40E
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