add request size counters

This commit is contained in:
rootdarkarchon
2023-08-01 22:09:45 +02:00
parent 1928a5f9b1
commit 32e9cf7795
4 changed files with 18 additions and 1 deletions

View File

@@ -28,4 +28,6 @@ public class MetricsAPI
public const string GaugeFilesUniquePastDaySize = "mare_files_unique_past_day_size"; public const string GaugeFilesUniquePastDaySize = "mare_files_unique_past_day_size";
public const string GaugeCurrentDownloads = "mare_current_downloads"; public const string GaugeCurrentDownloads = "mare_current_downloads";
public const string GaugeDownloadQueue = "mare_download_queue"; public const string GaugeDownloadQueue = "mare_download_queue";
public const string CounterFileRequests = "mare_files_requests";
public const string CounterFileRequestSize = "mare_files_request_size";
} }

View File

@@ -13,13 +13,15 @@ public class CacheController : ControllerBase
private readonly RequestFileStreamResultFactory _requestFileStreamResultFactory; private readonly RequestFileStreamResultFactory _requestFileStreamResultFactory;
private readonly CachedFileProvider _cachedFileProvider; private readonly CachedFileProvider _cachedFileProvider;
private readonly RequestQueueService _requestQueue; private readonly RequestQueueService _requestQueue;
private readonly FileStatisticsService _fileStatisticsService;
public CacheController(ILogger<CacheController> logger, RequestFileStreamResultFactory requestFileStreamResultFactory, public CacheController(ILogger<CacheController> logger, RequestFileStreamResultFactory requestFileStreamResultFactory,
CachedFileProvider cachedFileProvider, RequestQueueService requestQueue) : base(logger) CachedFileProvider cachedFileProvider, RequestQueueService requestQueue, FileStatisticsService fileStatisticsService) : base(logger)
{ {
_requestFileStreamResultFactory = requestFileStreamResultFactory; _requestFileStreamResultFactory = requestFileStreamResultFactory;
_cachedFileProvider = cachedFileProvider; _cachedFileProvider = cachedFileProvider;
_requestQueue = requestQueue; _requestQueue = requestQueue;
_fileStatisticsService = fileStatisticsService;
} }
[HttpGet(MareFiles.Cache_Get)] [HttpGet(MareFiles.Cache_Get)]
@@ -35,6 +37,8 @@ public class CacheController : ControllerBase
var memoryStream = new MemoryStream(); var memoryStream = new MemoryStream();
var streamWriter = new BinaryWriter(memoryStream); var streamWriter = new BinaryWriter(memoryStream);
long requestSize = 0;
foreach (var file in request.FileIds) foreach (var file in request.FileIds)
{ {
var fs = await _cachedFileProvider.GetAndDownloadFileStream(file); var fs = await _cachedFileProvider.GetAndDownloadFileStream(file);
@@ -43,11 +47,14 @@ public class CacheController : ControllerBase
byte[] buffer = new byte[fs.Length]; byte[] buffer = new byte[fs.Length];
_ = await fs.ReadAsync(buffer, HttpContext.RequestAborted); _ = await fs.ReadAsync(buffer, HttpContext.RequestAborted);
streamWriter.Write(buffer); streamWriter.Write(buffer);
requestSize += fs.Length;
} }
streamWriter.Flush(); streamWriter.Flush();
memoryStream.Position = 0; memoryStream.Position = 0;
_fileStatisticsService.LogRequest(requestSize);
return _requestFileStreamResultFactory.Create(requestId, memoryStream); return _requestFileStreamResultFactory.Create(requestId, memoryStream);
} }
} }

View File

@@ -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) public Task StartAsync(CancellationToken cancellationToken)
{ {
_logger.LogInformation("Starting FileStatisticsService"); _logger.LogInformation("Starting FileStatisticsService");

View File

@@ -63,6 +63,8 @@ public class Startup
MetricsAPI.GaugeFilesUniquePastHourSize, MetricsAPI.GaugeFilesUniquePastHourSize,
MetricsAPI.GaugeCurrentDownloads, MetricsAPI.GaugeCurrentDownloads,
MetricsAPI.GaugeDownloadQueue, MetricsAPI.GaugeDownloadQueue,
MetricsAPI.CounterFileRequests,
MetricsAPI.CounterFileRequestSize
})); }));
services.AddSingleton<CachedFileProvider>(); services.AddSingleton<CachedFileProvider>();
services.AddSingleton<FileStatisticsService>(); services.AddSingleton<FileStatisticsService>();