public MetricAggregator(IMetricSink metricSink) { _metricSink = metricSink; _metricValuesByName = new ConcurrentDictionary <string, ConcurrentQueue <double> >(StringComparer.InvariantCulture); _timer = new Timer(FlushMetrics); }
private async Task ReportMetricAsync(IMetricSink sink, string metricName, string metricDescription, ScrapeResult scrapedMetricResult) { Guard.NotNull(sink, nameof(sink)); Guard.NotNullOrWhitespace(metricName, nameof(metricName)); Guard.NotNull(scrapedMetricResult, nameof(scrapedMetricResult)); Guard.NotNull(scrapedMetricResult.MetricValues, nameof(scrapedMetricResult.MetricValues)); try { await sink.ReportMetricAsync(metricName, metricDescription, scrapedMetricResult); } catch (Exception ex) { Logger.LogCritical(ex, "Failed to write {MetricName} metric for sink {SinkType}", metricName, sink.Type); } }
public TimingBlock(string name, IMetricSink metricSink) { _name = name; _metricSink = metricSink; }
public void Enable(IMetricSink destination) { metricSink = destination; metricsEnabled = true; }
public TimingBlockFactory(IMetricSink metricSink) { _metricSink = metricSink; }