mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 04:56:49 +00:00
Collect metrics about webhook rate limit cache size
This commit is contained in:
parent
93bf7c6543
commit
05595329b5
3 changed files with 7 additions and 1 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue