Saltar al contenido principal

Métricas

IMetricsCollector registra métricas por solicitud: duración, conteos de éxito/fallo y tipos de error.

Implementaciones Built-in

ImplementaciónDescripción
NoOpMetricsCollectorNo hace nada — por defecto si no se registra collector
ConsoleMetricsCollectorImprime métricas en stdout — útil para desarrollo

IMetricsCollector Personalizado

public class PrometheusMetricsCollector : IMetricsCollector
{
private static readonly Counter RequestsTotal = Metrics.CreateCounter(
"mediator_requests_total",
"Total solicitudes del mediador",
new CounterConfiguration { LabelNames = new[] { "handler", "success" } });

private static readonly Histogram RequestDuration = Metrics.CreateHistogram(
"mediator_request_duration_seconds",
"Duración de solicitudes del mediador",
new HistogramConfiguration { LabelNames = new[] { "handler" } });

public void RecordRequestStarted(string requestName) { }

public void RecordRequestCompleted(string requestName, TimeSpan duration, bool success, string? errorType)
{
RequestsTotal.WithLabels(requestName, success.ToString()).Inc();
RequestDuration.WithLabels(requestName).Observe(duration.TotalSeconds);
}

public void RecordRequestFailed(string requestName, TimeSpan duration, Exception exception)
{
RequestsTotal.WithLabels(requestName, "false").Inc();
RequestDuration.WithLabels(requestName).Observe(duration.TotalSeconds);
}
}

Registro

builder.Services.AddSingleton<IMetricsCollector, PrometheusMetricsCollector>();