Collect metrics about webhook rate limit cache size

This commit is contained in:
Ske 2020-04-16 18:20:53 +02:00
parent 93bf7c6543
commit 05595329b5
3 changed files with 7 additions and 1 deletions

View File

@ -16,6 +16,7 @@ namespace PluralKit.Bot
public static GaugeOptions Channels => new GaugeOptions {Name = "Channels", MeasurementUnit = Unit.None, Context = "Bot"}; public static GaugeOptions Channels => new GaugeOptions {Name = "Channels", MeasurementUnit = Unit.None, Context = "Bot"};
public static GaugeOptions ShardsConnected => new GaugeOptions { Name = "Shards Connected", Context = "Bot" }; public static GaugeOptions ShardsConnected => new GaugeOptions { Name = "Shards Connected", Context = "Bot" };
public static GaugeOptions WebhookCacheSize => new GaugeOptions { Name = "Webhook Cache Size", Context = "Bot" }; public static GaugeOptions WebhookCacheSize => new GaugeOptions { Name = "Webhook Cache Size", Context = "Bot" };
public static GaugeOptions WebhookRateLimitCacheSize => new GaugeOptions {Name = "Webhook Rate Limit Cache Size", Context = "Bot"};
public static TimerOptions WebhookResponseTime => new TimerOptions { Name = "Webhook Response Time", Context = "Bot", RateUnit = TimeUnit.Seconds, MeasurementUnit = Unit.Requests, DurationUnit = TimeUnit.Seconds }; public static TimerOptions WebhookResponseTime => new TimerOptions { Name = "Webhook Response Time", Context = "Bot", RateUnit = TimeUnit.Seconds, MeasurementUnit = Unit.Requests, DurationUnit = TimeUnit.Seconds };
} }
} }

View File

@ -21,12 +21,13 @@ namespace PluralKit.Bot
private IDataStore _data; private IDataStore _data;
private WebhookCacheService _webhookCache; private WebhookCacheService _webhookCache;
private WebhookRateLimitService _webhookRateLimitCache;
private DbConnectionCountHolder _countHolder; private DbConnectionCountHolder _countHolder;
private ILogger _logger; private ILogger _logger;
public PeriodicStatCollector(IDiscordClient client, IMetrics metrics, ILogger logger, WebhookCacheService webhookCache, DbConnectionCountHolder countHolder, IDataStore data, CpuStatService cpu) public PeriodicStatCollector(IDiscordClient client, IMetrics metrics, ILogger logger, WebhookCacheService webhookCache, DbConnectionCountHolder countHolder, IDataStore data, CpuStatService cpu, WebhookRateLimitService webhookRateLimitCache)
{ {
_client = (DiscordShardedClient) client; _client = (DiscordShardedClient) client;
_metrics = metrics; _metrics = metrics;
@ -34,6 +35,7 @@ namespace PluralKit.Bot
_countHolder = countHolder; _countHolder = countHolder;
_data = data; _data = data;
_cpu = cpu; _cpu = cpu;
_webhookRateLimitCache = webhookRateLimitCache;
_logger = logger.ForContext<PeriodicStatCollector>(); _logger = logger.ForContext<PeriodicStatCollector>();
} }
@ -80,6 +82,7 @@ namespace PluralKit.Bot
// Other shiz // Other shiz
_metrics.Measure.Gauge.SetValue(BotMetrics.WebhookCacheSize, _webhookCache.CacheSize); _metrics.Measure.Gauge.SetValue(BotMetrics.WebhookCacheSize, _webhookCache.CacheSize);
_metrics.Measure.Gauge.SetValue(BotMetrics.WebhookRateLimitCacheSize, _webhookRateLimitCache.CacheSize);
stopwatch.Stop(); stopwatch.Stop();
_logger.Information("Updated metrics in {Time}", stopwatch.ElapsedDuration()); _logger.Information("Updated metrics in {Time}", stopwatch.ElapsedDuration());

View File

@ -24,6 +24,8 @@ namespace PluralKit.Bot
_logger = logger.ForContext<WebhookRateLimitService>(); _logger = logger.ForContext<WebhookRateLimitService>();
} }
public int CacheSize => _info.Count;
public bool TryExecuteWebhook(IWebhook webhook) public bool TryExecuteWebhook(IWebhook webhook)
{ {
// If we have nothing saved, just allow it (we'll save something once the response returns) // If we have nothing saved, just allow it (we'll save something once the response returns)