Open namidaka opened 1 year ago
using System.Diagnostics.Metrics;
using System.Reflection;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
namespace Crpg.Module.Telemetry;
internal static class CrpgMetrics
{
private static readonly AssemblyName AssemblyName = typeof(CrpgMetrics).Assembly.GetName();
private static readonly string InstrumentationName = AssemblyName.Name!;
private static readonly string InstrumentationVersion = AssemblyName.Version!.ToString();
private static readonly Meter Meter = new(InstrumentationName, InstrumentationVersion);
// ReSharper disable NotAccessedField.Local
private static readonly ObservableGauge<long> UsersPlayingGauge;
// ReSharper restore NotAccessedField.Local
private static long _usersPlaying;
static CrpgMetrics()
{
UsersPlayingGauge = Meter.CreateObservableGauge("crpg.users.playing.count", () => _usersPlaying);
}
public static void Init()
{
string? region = Environment.GetEnvironmentVariable("CRPG_REGION");
string? service = Environment.GetEnvironmentVariable("CRPG_SERVICE");
string? instance = Environment.GetEnvironmentVariable("CRPG_INSTANCE");
if (region == null || service == null || instance == null)
{
return;
}
var resourceBuilder = ResourceBuilder.CreateEmpty()
.AddService(serviceName: service, serviceInstanceId: instance)
.AddAttributes(new[] { new KeyValuePair<string, object>("region", region) });
Sdk.CreateMeterProviderBuilder()
.SetResourceBuilder(resourceBuilder)
.AddConsoleExporter()
.Build();
}
public static void SetUserPlaying(long userPlaying) => _usersPlaying = userPlaying;
}
I got some dependency issues. I'll wait for the game to be migrated to .NET 6.
From crpg created by verdie-g: verdie-g/crpg#708
null