using System.Diagnostics.Metrics; namespace YarpGateway.Metrics; public class GatewayMetrics { private readonly Counter _requestsTotal; private readonly Histogram _requestDuration; public GatewayMetrics(IMeterFactory meterFactory) { var meter = meterFactory.Create("fengling.gateway"); _requestsTotal = meter.CreateCounter( "gateway_requests_total", "Total number of requests"); _requestDuration = meter.CreateHistogram( "gateway_request_duration_seconds", "Request duration in seconds"); } public void RecordRequest(string tenant, string service, int statusCode, double duration) { var tag = new KeyValuePair("tenant", tenant); var tag2 = new KeyValuePair("service", service); var tag3 = new KeyValuePair("status", statusCode.ToString()); _requestsTotal.Add(1, tag, tag2, tag3); _requestDuration.Record(duration, tag, tag2); } }