This commit is contained in:
Zurazan
2025-08-27 03:02:29 +02:00
commit 80235a174b
344 changed files with 43249 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
using Microsoft.Extensions.Logging;
using Prometheus;
namespace LightlessSyncShared.Metrics;
public class LightlessMetrics
{
public LightlessMetrics(ILogger<LightlessMetrics> logger, List<string> countersToServe, List<string> gaugesToServe)
{
logger.LogInformation("Initializing LightlessMetrics");
foreach (var counter in countersToServe)
{
logger.LogInformation($"Creating Metric for Counter {counter}");
_counters.Add(counter, Prometheus.Metrics.CreateCounter(counter, counter));
}
foreach (var gauge in gaugesToServe)
{
logger.LogInformation($"Creating Metric for Counter {gauge}");
if (!string.Equals(gauge, MetricsAPI.GaugeConnections, StringComparison.OrdinalIgnoreCase))
_gauges.Add(gauge, Prometheus.Metrics.CreateGauge(gauge, gauge));
else
_gauges.Add(gauge, Prometheus.Metrics.CreateGauge(gauge, gauge, new[] { "continent" }));
}
}
private readonly Dictionary<string, Counter> _counters = new(StringComparer.Ordinal);
private readonly Dictionary<string, Gauge> _gauges = new(StringComparer.Ordinal);
public void IncGaugeWithLabels(string gaugeName, double value = 1.0, params string[] labels)
{
if (_gauges.TryGetValue(gaugeName, out Gauge gauge))
{
lock (gauge)
gauge.WithLabels(labels).Inc(value);
}
}
public void DecGaugeWithLabels(string gaugeName, double value = 1.0, params string[] labels)
{
if (_gauges.TryGetValue(gaugeName, out Gauge gauge))
{
lock (gauge)
gauge.WithLabels(labels).Dec(value);
}
}
public void SetGaugeTo(string gaugeName, double value)
{
if (_gauges.TryGetValue(gaugeName, out Gauge gauge))
{
lock (gauge)
gauge.Set(value);
}
}
public void IncGauge(string gaugeName, double value = 1.0)
{
if (_gauges.TryGetValue(gaugeName, out Gauge gauge))
{
lock (gauge)
gauge.Inc(value);
}
}
public void DecGauge(string gaugeName, double value = 1.0)
{
if (_gauges.TryGetValue(gaugeName, out Gauge gauge))
{
lock (gauge)
gauge.Dec(value);
}
}
public void IncCounter(string counterName, double value = 1.0)
{
if (_counters.TryGetValue(counterName, out Counter counter))
{
lock (counter)
counter.Inc(value);
}
}
}

View File

@@ -0,0 +1,53 @@
namespace LightlessSyncShared.Metrics;
public class MetricsAPI
{
public const string CounterInitializedConnections = "lightless_initialized_connections";
public const string GaugeConnections = "lightless_connections";
public const string GaugeAuthorizedConnections = "lightless_authorized_connections";
public const string GaugeAvailableWorkerThreads = "lightless_available_threadpool";
public const string GaugeAvailableIOWorkerThreads = "lightless_available_threadpool_io";
public const string GaugeUsersRegistered = "lightless_users_registered";
public const string CounterUsersRegisteredDeleted = "lightless_users_registered_deleted";
public const string GaugePairs = "lightless_pairs";
public const string GaugePairsPaused = "lightless_pairs_paused";
public const string GaugeFilesTotal = "lightless_files";
public const string GaugeFilesTotalColdStorage = "lightless_files_cold";
public const string GaugeFilesTotalSize = "lightless_files_size";
public const string GaugeFilesTotalSizeColdStorage = "lightless_files_size_cold";
public const string GaugeFilesDownloadingFromCache = "lightless_files_downloading_from_cache";
public const string GaugeFilesTasksWaitingForDownloadFromCache = "lightless_files_waiting_for_dl";
public const string CounterUserPushData = "lightless_user_push";
public const string CounterUserPushDataTo = "lightless_user_push_to";
public const string CounterAuthenticationRequests = "lightless_auth_requests";
public const string CounterAuthenticationCacheHits = "lightless_auth_requests_cachehit";
public const string CounterAuthenticationFailures = "lightless_auth_requests_fail";
public const string CounterAuthenticationSuccesses = "lightless_auth_requests_success";
public const string GaugeAuthenticationCacheEntries = "lightless_auth_cache";
public const string GaugeGroups = "lightless_groups";
public const string GaugeGroupPairs = "lightless_groups_pairs";
public const string GaugeFilesUniquePastHour = "lightless_files_unique_past_hour";
public const string GaugeFilesUniquePastHourSize = "lightless_files_unique_past_hour_size";
public const string GaugeFilesUniquePastDay = "lightless_files_unique_past_day";
public const string GaugeFilesUniquePastDaySize = "lightless_files_unique_past_day_size";
public const string GaugeCurrentDownloads = "lightless_current_downloads";
public const string GaugeQueueFree = "lightless_download_queue_free";
public const string GaugeQueueActive = "lightless_download_queue_active";
public const string GaugeQueueInactive = "lightless_download_queue_inactive";
public const string GaugeDownloadQueue = "lightless_download_queue";
public const string GaugeDownloadQueueCancelled = "lightless_download_queue_cancelled";
public const string GaugeDownloadPriorityQueue = "lightless_download_priority_queue";
public const string GaugeDownloadPriorityQueueCancelled = "lightless_download_priority_queue_cancelled";
public const string CounterFileRequests = "lightless_files_requests";
public const string CounterFileRequestSize = "lightless_files_request_size";
public const string CounterUserPairCacheHit = "lightless_pairscache_hit";
public const string CounterUserPairCacheMiss = "lightless_pairscache_miss";
public const string GaugeUserPairCacheUsers = "lightless_pairscache_users";
public const string GaugeUserPairCacheEntries = "lightless_pairscache_entries";
public const string CounterUserPairCacheNewEntries = "lightless_pairscache_new_entries";
public const string CounterUserPairCacheUpdatedEntries = "lightless_pairscache_updated_entries";
public const string GaugeGposeLobbies = "lightless_gpose_lobbies";
public const string GaugeGposeLobbyUsers = "lightless_gpose_lobby_users";
public const string GaugeHubConcurrency = "lightless_free_concurrent_hub_calls";
public const string GaugeHubQueuedConcurrency = "lightless_free_concurrent_queued_hub_calls";
}