Add PrometheusSettings

This commit is contained in:
Kieran 2022-08-28 21:28:51 +01:00
parent 23816a0c07
commit 1a99170b28
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
3 changed files with 20 additions and 13 deletions

View File

@ -232,5 +232,5 @@ public static class Extensions
=> !string.IsNullOrEmpty(settings.Redis);
public static bool HasPrometheus(this VoidSettings settings)
=> settings.Prometheus != null;
=> settings.Prometheus?.Url != null;
}

View File

@ -79,7 +79,7 @@ namespace VoidCat.Model
/// <summary>
/// Prometheus server for querying metrics
/// </summary>
public Uri? Prometheus { get; init; }
public PrometheusSettings? Prometheus { get; init; }
/// <summary>
/// Select where to store metadata, if not set "local-disk" will be used
@ -152,4 +152,11 @@ namespace VoidCat.Model
public string? SiteKey { get; init; }
public string? Secret { get; init; }
}
public sealed class PrometheusSettings
{
public Uri? Url { get; init; }
public string? EgressQuery { get; init; }
public string? IngressQuery { get; init; }
}
}

View File

@ -11,25 +11,25 @@ public class PrometheusStatsReporter : ITimeSeriesStatsReporter
{
private readonly ILogger<PrometheusStatsReporter> _logger;
private readonly HttpClient _client;
private readonly VoidSettings _settings;
public PrometheusStatsReporter(ILogger<PrometheusStatsReporter> logger, HttpClient client, VoidSettings settings)
{
_client = client;
_settings = settings;
_logger = logger;
_client.BaseAddress = settings.Prometheus;
_client.BaseAddress = settings.Prometheus!.Url;
}
public async ValueTask<IReadOnlyList<BandwidthPoint>> GetBandwidth(DateTime start, DateTime end)
{
var q = "increase(egress{file=\"\"}[1d])";
return await QueryInner(q, start, end);
return await QueryInner(string.Format(_settings.Prometheus?.EgressQuery ?? string.Empty, string.Empty), start, end);
}
public async ValueTask<IReadOnlyList<BandwidthPoint>> GetBandwidth(Guid id, DateTime start, DateTime end)
{
var q = $"increase(egress{{file=\"{id}\"}}[1d])";
return await QueryInner(q, start, end);
return await QueryInner(string.Format(_settings.Prometheus?.EgressQuery ?? string.Empty, id.ToString()), start, end);
}
private async Task<IReadOnlyList<BandwidthPoint>> QueryInner(string query, DateTime start, DateTime end)