Collect metrics about webhook rate limit cache size
This commit is contained in:
parent
93bf7c6543
commit
05595329b5
@ -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 };
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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());
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user