예제 #1
0
        public MetricsDataValueSource GetData(IMetricsFilter filter)
        {
            _logger.RetrievedMetricsData();

            if (_contexts.Count == 0)
            {
                return(MetricsDataValueSource.Empty);
            }

            var environment = _environmentInfoProvider.Build();

            var contexts = _contexts.Values.Select(g => new MetricsContextValueSource(
                                                       g.Context,
                                                       g.DataProvider.Gauges.ToArray(),
                                                       g.DataProvider.Counters.ToArray(),
                                                       g.DataProvider.Meters.ToArray(),
                                                       g.DataProvider.Histograms.ToArray(),
                                                       g.DataProvider.Timers.ToArray(),
                                                       g.DataProvider.ApdexScores.ToArray()
                                                       ));

            var data = new MetricsDataValueSource(_clock.UtcDateTime, environment, contexts);

            _logger.GettingMetricsData();

            return(data.Filter(filter));
        }
예제 #2
0
        public MetricsDataValueSource GetData(IFilterMetrics filter)
        {
            Logger.Trace("Getting metrics snaphot");

            if (_nullMetricsRegistry.IsValueCreated)
            {
                Logger.Trace("Using null metrics registry");
                _nullMetricsRegistry.Value.GetData(filter);
            }

            if (_contexts.Count == 0)
            {
                Logger.Trace("No metrics recorded");
                return(MetricsDataValueSource.Empty);
            }

            Logger.Trace("Metrics snapshot retrieved containing {ContextCount} contexts", _contexts.Count);

            var contexts = _contexts.Values.Select(
                g => new MetricsContextValueSource(
                    g.Context,
                    g.DataProvider.Gauges.ToArray(),
                    g.DataProvider.Counters.ToArray(),
                    g.DataProvider.Meters.ToArray(),
                    g.DataProvider.Histograms.ToArray(),
                    g.DataProvider.Timers.ToArray(),
                    g.DataProvider.ApdexScores.ToArray()));

            var data = new MetricsDataValueSource(_clock.UtcDateTime, contexts);

            return(data.Filter(filter));
        }