/// <summary> /// Update data for the metrics. Called immediately before the metrics are scraped. /// </summary> public void UpdateMetrics() { foreach (var(name, value) in MemInfoParser.Parse()) { if (_metrics.TryGetValue(name, out var gauge)) { gauge.Set(value); } } }
/// <summary> /// Creates the Prometheus metric. /// </summary> /// <param name="factory">Factory to create metric using</param> public void CreateMetrics(MetricFactory factory) { var metrics = new Dictionary <string, Gauge>(); foreach (var(name, _) in MemInfoParser.Parse()) { var cleanName = name.Replace('(', '_').Replace(")", ""); cleanName = $"node_memory_{cleanName}_bytes"; metrics[name] = factory.CreateGauge(cleanName, $"Memory information field {name}"); } _metrics = metrics; }
public void ParsesMemInfo() { const string input = @" MemTotal: 16470140 kB MemFree: 3690788 kB Buffers: 34032 kB Cached: 188576 kB Active(anon): 103104 kB Inactive(anon): 17440 kB Active(file): 64452 kB Dirty: 0 kB HugePages_Total: 0 "; var result = MemInfoParser.Parse(input); result.Should().BeEquivalentTo(new[]