Collect metrics about webhook rate limit cache size
This commit is contained in:
		| @@ -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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user