From 32e9cf7795b715f45a89be0bb6488a3eac7095a6 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Tue, 1 Aug 2023 22:09:45 +0200 Subject: [PATCH] add request size counters --- .../MareSynchronosShared/Metrics/MetricsAPI.cs | 2 ++ .../Controllers/CacheController.cs | 9 ++++++++- .../Services/FileStatisticsService.cs | 6 ++++++ .../MareSynchronosStaticFilesServer/Startup.cs | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs b/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs index 2d12571..8d5c2fb 100644 --- a/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs +++ b/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs @@ -28,4 +28,6 @@ public class MetricsAPI public const string GaugeFilesUniquePastDaySize = "mare_files_unique_past_day_size"; public const string GaugeCurrentDownloads = "mare_current_downloads"; public const string GaugeDownloadQueue = "mare_download_queue"; + public const string CounterFileRequests = "mare_files_requests"; + public const string CounterFileRequestSize = "mare_files_request_size"; } \ No newline at end of file diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/CacheController.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/CacheController.cs index afca305..580b6a4 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/CacheController.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/CacheController.cs @@ -13,13 +13,15 @@ public class CacheController : ControllerBase private readonly RequestFileStreamResultFactory _requestFileStreamResultFactory; private readonly CachedFileProvider _cachedFileProvider; private readonly RequestQueueService _requestQueue; + private readonly FileStatisticsService _fileStatisticsService; public CacheController(ILogger logger, RequestFileStreamResultFactory requestFileStreamResultFactory, - CachedFileProvider cachedFileProvider, RequestQueueService requestQueue) : base(logger) + CachedFileProvider cachedFileProvider, RequestQueueService requestQueue, FileStatisticsService fileStatisticsService) : base(logger) { _requestFileStreamResultFactory = requestFileStreamResultFactory; _cachedFileProvider = cachedFileProvider; _requestQueue = requestQueue; + _fileStatisticsService = fileStatisticsService; } [HttpGet(MareFiles.Cache_Get)] @@ -35,6 +37,8 @@ public class CacheController : ControllerBase var memoryStream = new MemoryStream(); var streamWriter = new BinaryWriter(memoryStream); + long requestSize = 0; + foreach (var file in request.FileIds) { var fs = await _cachedFileProvider.GetAndDownloadFileStream(file); @@ -43,11 +47,14 @@ public class CacheController : ControllerBase byte[] buffer = new byte[fs.Length]; _ = await fs.ReadAsync(buffer, HttpContext.RequestAborted); streamWriter.Write(buffer); + requestSize += fs.Length; } streamWriter.Flush(); memoryStream.Position = 0; + _fileStatisticsService.LogRequest(requestSize); + return _requestFileStreamResultFactory.Create(requestId, memoryStream); } } diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/FileStatisticsService.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/FileStatisticsService.cs index 4f99aac..608fa24 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/FileStatisticsService.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/FileStatisticsService.cs @@ -33,6 +33,12 @@ public class FileStatisticsService : IHostedService } } + public void LogRequest(long requestSize) + { + _metrics.IncCounter(MetricsAPI.CounterFileRequests); + _metrics.IncCounter(MetricsAPI.CounterFileRequestSize); + } + public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Starting FileStatisticsService"); diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs index ef49719..a4bdb52 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs @@ -63,6 +63,8 @@ public class Startup MetricsAPI.GaugeFilesUniquePastHourSize, MetricsAPI.GaugeCurrentDownloads, MetricsAPI.GaugeDownloadQueue, + MetricsAPI.CounterFileRequests, + MetricsAPI.CounterFileRequestSize })); services.AddSingleton(); services.AddSingleton();