32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
using System.Text.RegularExpressions;
|
|
|
|
namespace Jiaowu.Api.Infrastructure.Observability;
|
|
|
|
public sealed partial class PerformanceReportingOptions
|
|
{
|
|
public const string SectionName = "PerformanceReporting";
|
|
|
|
public bool Enabled { get; set; }
|
|
public string PrometheusBaseUrl { get; set; } = "";
|
|
public string BearerToken { get; set; } = "";
|
|
public string GrafanaBaseUrl { get; set; } = "";
|
|
public int CacheSeconds { get; set; } = 30;
|
|
public int TimeoutSeconds { get; set; } = 10;
|
|
public string ServiceLabel { get; set; } = "service_name";
|
|
public string RequestDurationMetric { get; set; } =
|
|
"http_server_request_duration_seconds";
|
|
public string DatabaseDurationMetric { get; set; } =
|
|
"jiaowu_db_command_duration_milliseconds";
|
|
public string SlowDatabaseMetric { get; set; } =
|
|
"jiaowu_db_command_slow_total";
|
|
public string FailedDatabaseMetric { get; set; } =
|
|
"jiaowu_db_command_failed_total";
|
|
|
|
public static bool IsMetricOrLabelName(string value) =>
|
|
!string.IsNullOrWhiteSpace(value) &&
|
|
PrometheusNamePattern().IsMatch(value);
|
|
|
|
[GeneratedRegex("^[a-zA-Z_:][a-zA-Z0-9_:]*$")]
|
|
private static partial Regex PrometheusNamePattern();
|
|
}
|