Started implementing metrics system

This commit is contained in:
2025-05-23 17:15:19 +02:00
parent 565d9a5a4d
commit f3a35bd62a
7 changed files with 203 additions and 8 deletions

View File

@@ -0,0 +1,35 @@
using System.Diagnostics.Metrics;
using Moonlight.ApiServer.Interfaces;
using Moonlight.ApiServer.Services;
namespace Moonlight.ApiServer.Implementations.Metrics;
public class ApplicationMetric : IMetric
{
private Gauge<long> MemoryUsage;
private Gauge<int> CpuUsage;
private Gauge<double> Uptime;
public Task Initialize(Meter meter)
{
MemoryUsage = meter.CreateGauge<long>("moonlight_memory_usage");
CpuUsage = meter.CreateGauge<int>("moonlight_cpu_usage");
Uptime = meter.CreateGauge<double>("moonlight_uptime");
return Task.CompletedTask;
}
public async Task Run(IServiceProvider provider, CancellationToken cancellationToken)
{
var applicationService = provider.GetRequiredService<ApplicationService>();
var memory = await applicationService.GetMemoryUsage();
MemoryUsage.Record(memory);
var uptime = await applicationService.GetUptime();
Uptime.Record(uptime.TotalSeconds);
var cpu = await applicationService.GetCpuUsage();
CpuUsage.Record(cpu);
}
}