From f18a1d584da54131327f6538022414512e8560c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Domeradzki?= Date: Tue, 7 Jan 2025 14:59:31 +0100 Subject: [PATCH] Misc monitoring stuff --- .../MonitoringPlugin.cs | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/ArchiSteamFarm.OfficialPlugins.Monitoring/MonitoringPlugin.cs b/ArchiSteamFarm.OfficialPlugins.Monitoring/MonitoringPlugin.cs index e7aa39ed5..111415f8c 100644 --- a/ArchiSteamFarm.OfficialPlugins.Monitoring/MonitoringPlugin.cs +++ b/ArchiSteamFarm.OfficialPlugins.Monitoring/MonitoringPlugin.cs @@ -23,6 +23,7 @@ using System; using System.Collections.Concurrent; +using System.Collections.Frozen; using System.Collections.Generic; using System.Composition; using System.Diagnostics.CodeAnalysis; @@ -51,8 +52,23 @@ internal sealed class MonitoringPlugin : OfficialPlugin, IBot, IBotTradeOfferRes private const string MetricNamePrefix = "asf"; private const string UnknownLabelValueFallback = "unknown"; + private static readonly Measurement BuildInfo = new( + 1, + new KeyValuePair(TagNames.Version, SharedInfo.Version.ToString()), + new KeyValuePair(TagNames.Variant, Core.BuildInfo.Variant) + ); + + private static readonly Measurement RuntimeInfo = new( + 1, + new KeyValuePair(TagNames.Framework, OS.Framework ?? UnknownLabelValueFallback), + new KeyValuePair(TagNames.Runtime, OS.Runtime ?? UnknownLabelValueFallback), + new KeyValuePair(TagNames.OS, OS.Description ?? UnknownLabelValueFallback) + ); + private static bool Enabled => ASF.GlobalConfig?.IPC ?? GlobalConfig.DefaultIPC; + private static FrozenSet>? PluginMeasurements; + [JsonInclude] public override string Name => nameof(MonitoringPlugin); @@ -135,26 +151,23 @@ internal sealed class MonitoringPlugin : OfficialPlugin, IBot, IBotTradeOfferRes return; } + PluginMeasurements = new HashSet>(3) { + new(PluginsCore.ActivePlugins.Count), + new(PluginsCore.ActivePlugins.Count(static plugin => plugin is OfficialPlugin), new KeyValuePair(TagNames.PluginType, "official")), + new(PluginsCore.ActivePlugins.Count(static plugin => plugin is not OfficialPlugin), new KeyValuePair(TagNames.PluginType, "custom")) + }.ToFrozenSet(); + Meter = new Meter(MeterName, Version.ToString()); Meter.CreateObservableGauge( $"{MetricNamePrefix}_build_info", - static () => new Measurement( - 1, - new KeyValuePair(TagNames.Version, SharedInfo.Version.ToString()), - new KeyValuePair(TagNames.Variant, BuildInfo.Variant) - ), + static () => BuildInfo, description: "Build information about ASF in form of label values" ); Meter.CreateObservableGauge( $"{MetricNamePrefix}_runtime_info", - static () => new Measurement( - 1, - new KeyValuePair(TagNames.Framework, OS.Framework ?? UnknownLabelValueFallback), - new KeyValuePair(TagNames.Runtime, OS.Runtime ?? UnknownLabelValueFallback), - new KeyValuePair(TagNames.OS, OS.Description ?? UnknownLabelValueFallback) - ), + static () => RuntimeInfo, description: "Runtime information about ASF in form of label values" ); @@ -166,11 +179,7 @@ internal sealed class MonitoringPlugin : OfficialPlugin, IBot, IBotTradeOfferRes Meter.CreateObservableGauge( $"{MetricNamePrefix}_active_plugins", - static () => new HashSet>(3) { - new(PluginsCore.ActivePlugins.Count), - new(PluginsCore.ActivePlugins.Count(static plugin => plugin is OfficialPlugin), new KeyValuePair(TagNames.PluginType, "official")), - new(PluginsCore.ActivePlugins.Count(static plugin => plugin is not OfficialPlugin), new KeyValuePair(TagNames.PluginType, "custom")) - }, + static () => PluginMeasurements, description: "Number of plugins currently loaded in ASF" );