forked from Kieran/void.cat
Add PrometheusSettings
This commit is contained in:
parent
23816a0c07
commit
1a99170b28
@ -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;
|
||||
}
|
@ -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; }
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user