using System.Diagnostics.Metrics; namespace StellaOps.Scanner.Cache; public static class ScannerCacheMetrics { public const string MeterName = "StellaOps.Scanner.Cache"; private static readonly Meter Meter = new(MeterName, "1.0.0"); private static readonly Counter LayerHits = Meter.CreateCounter("scanner.layer_cache_hits_total"); private static readonly Counter LayerMisses = Meter.CreateCounter("scanner.layer_cache_misses_total"); private static readonly Counter LayerEvictions = Meter.CreateCounter("scanner.layer_cache_evictions_total"); private static readonly Histogram LayerBytes = Meter.CreateHistogram("scanner.layer_cache_bytes"); private static readonly Counter FileCasHits = Meter.CreateCounter("scanner.file_cas_hits_total"); private static readonly Counter FileCasMisses = Meter.CreateCounter("scanner.file_cas_misses_total"); private static readonly Counter FileCasEvictions = Meter.CreateCounter("scanner.file_cas_evictions_total"); private static readonly Histogram FileCasBytes = Meter.CreateHistogram("scanner.file_cas_bytes"); public static void RecordLayerHit(string layerDigest) => LayerHits.Add(1, new KeyValuePair("layer", layerDigest)); public static void RecordLayerMiss(string layerDigest) => LayerMisses.Add(1, new KeyValuePair("layer", layerDigest)); public static void RecordLayerEviction(string layerDigest) => LayerEvictions.Add(1, new KeyValuePair("layer", layerDigest)); public static void RecordLayerBytes(long bytes) => LayerBytes.Record(bytes); public static void RecordFileCasHit(string sha256) => FileCasHits.Add(1, new KeyValuePair("sha256", sha256)); public static void RecordFileCasMiss(string sha256) => FileCasMisses.Add(1, new KeyValuePair("sha256", sha256)); public static void RecordFileCasEviction(string sha256) => FileCasEvictions.Add(1, new KeyValuePair("sha256", sha256)); public static void RecordFileCasBytes(long bytes) => FileCasBytes.Record(bytes); }