Пример #1
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            long count = value.Count;

            if (name.Contains(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX))
            {
                string taggedName = "meter:" + TaggedMetricsRegistry.TagName(name, tags);
                if (reportOnUpdate.ContainsKey(taggedName))
                {
                    if (reportOnUpdate[taggedName] == count)
                    {
                        return;
                    }
                }
                reportOnUpdate[taggedName] = count;
                name = name.Remove(name.IndexOf(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX), TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX.Length);
            }
            AddCumulativeCounter(SubfolderName(name, unit, "Total"), count, tags, null);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-Mean"), value.MeanRate, tags, MetricDetails.rate_mean);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-1-min"), value.OneMinuteRate, tags, MetricDetails.rate_1min);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-5-min"), value.FiveMinuteRate, tags, MetricDetails.rate_5min);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-15-min"), value.FifteenMinuteRate, tags, MetricDetails.rate_15min);

            foreach (var item in value.Items)
            {
                AddGauge(SubfolderName(name, unit, item.Item, "Percent"), item.Percent, tags, MetricDetails.percent);
                AddCumulativeCounter(SubfolderName(name, unit, item.Item, "Count"), item.Value.Count, tags, MetricDetails.count);
                AddGauge(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-Mean"), item.Value.MeanRate, tags, MetricDetails.rate_mean);
                AddGauge(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-1-min"), item.Value.OneMinuteRate, tags, MetricDetails.rate_1min);
                AddGauge(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-5-min"), item.Value.FiveMinuteRate, tags, MetricDetails.rate_5min);
                AddGauge(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-15-min"), item.Value.FifteenMinuteRate, tags, MetricDetails.rate_15min);
            }
        }
Пример #2
0
        protected override void ReportHistogram(string name, HistogramValue value, Unit unit, MetricTags tags)
        {
            long count = value.Count;

            if (name.Contains(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX))
            {
                string taggedName = "histogram:" + TaggedMetricsRegistry.TagName(name, tags);
                if (reportOnUpdate.ContainsKey(taggedName))
                {
                    if (reportOnUpdate[taggedName] == count)
                    {
                        return;
                    }
                }
                reportOnUpdate[taggedName] = count;
                name = name.Remove(name.IndexOf(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX), TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX.Length);
            }

            AddCumulativeCounter(SubfolderName(name, unit, "Count"), count, tags, MetricDetails.count);
            AddGauge(SubfolderName(name, unit, "Last"), value.LastValue, tags, MetricDetails.last);
            AddGauge(SubfolderName(name, unit, "Min"), value.Min, tags, MetricDetails.min);
            AddGauge(SubfolderName(name, unit, "Mean"), value.Mean, tags, MetricDetails.mean);
            AddGauge(SubfolderName(name, unit, "Max"), value.Max, tags, MetricDetails.max);
            AddGauge(SubfolderName(name, unit, "StdDev"), value.StdDev, tags, MetricDetails.stddev);
            AddGauge(SubfolderName(name, unit, "Median"), value.Median, tags, MetricDetails.median);
            AddGauge(SubfolderName(name, unit, "p75"), value.Percentile75, tags, MetricDetails.percent_75);
            AddGauge(SubfolderName(name, unit, "p95"), value.Percentile95, tags, MetricDetails.percent_95);
            AddGauge(SubfolderName(name, unit, "p98"), value.Percentile98, tags, MetricDetails.percent_98);
            AddGauge(SubfolderName(name, unit, "p99"), value.Percentile99, tags, MetricDetails.percent_99);
            AddGauge(SubfolderName(name, unit, "p999"), value.Percentile999, tags, MetricDetails.percent_999);
        }
Пример #3
0
        protected override void ReportTimer(string name, TimerValue value, Unit unit, TimeUnit rateUnit, TimeUnit durationUnit, MetricTags tags)
        {
            long count = value.Rate.Count;

            if (name.Contains(TaggedMetricsRegistry.INCREMENTAL_PREFIX))
            {
                string taggedName  = "timer:" + TaggedMetricsRegistry.TagName(name, tags);
                var    reportCount = count;
                if (incrementalMetrics.ContainsKey(taggedName))
                {
                    reportCount = count - incrementalMetrics[taggedName];
                }
                incrementalMetrics[taggedName] = count;
                name = name.Remove(name.IndexOf(TaggedMetricsRegistry.INCREMENTAL_PREFIX), TaggedMetricsRegistry.INCREMENTAL_PREFIX.Length);
                AddCounter(SubfolderName(name, unit, "Count"), reportCount, tags, MetricDetails.count);
                AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-Mean"), value.Histogram.Mean, tags, MetricDetails.mean);
                return;
            }

            if (name.Contains(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX))
            {
                string taggedName = "timer:" + TaggedMetricsRegistry.TagName(name, tags);
                if (reportOnUpdate.ContainsKey(taggedName))
                {
                    if (reportOnUpdate[taggedName] == count)
                    {
                        return;
                    }
                }
                reportOnUpdate[taggedName] = count;
                name = name.Remove(name.IndexOf(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX), TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX.Length);
            }

            AddCumulativeCounter(SubfolderName(name, unit, "Count"), count, tags, MetricDetails.count);
            AddGauge(SubfolderName(name, unit, "Active_Sessions"), value.ActiveSessions, tags, MetricDetails.active_sessions);

            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-Mean"), value.Rate.MeanRate, tags, MetricDetails.rate_mean);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-1-min"), value.Rate.OneMinuteRate, tags, MetricDetails.rate_1min);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-5-min"), value.Rate.FiveMinuteRate, tags, MetricDetails.rate_5min);
            AddGauge(SubfolderName(name, AsRate(unit, rateUnit), "Rate-15-min"), value.Rate.FifteenMinuteRate, tags, MetricDetails.rate_15min);

            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-Last"), value.Histogram.LastValue, tags, MetricDetails.last);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-Min"), value.Histogram.Min, tags, MetricDetails.min);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-Mean"), value.Histogram.Mean, tags, MetricDetails.mean);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-Max"), value.Histogram.Max, tags, MetricDetails.max);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-StdDev"), value.Histogram.StdDev, tags, MetricDetails.stddev);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-Median"), value.Histogram.Median, tags, MetricDetails.median);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-p75"), value.Histogram.Percentile75, tags, MetricDetails.percent_75);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-p95"), value.Histogram.Percentile95, tags, MetricDetails.percent_95);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-p98"), value.Histogram.Percentile98, tags, MetricDetails.percent_98);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-p99"), value.Histogram.Percentile99, tags, MetricDetails.percent_99);
            AddGauge(SubfolderName(name, durationUnit.Unit(), "Duration-p999"), value.Histogram.Percentile999, tags, MetricDetails.percent_999);
        }
Пример #4
0
        protected override void ReportCounter(string name, CounterValue value, Unit unit, MetricTags tags)
        {
            if (name.Contains(IncrementalCounter.INC_COUNTER_PREFIX))
            {
                name = name.Remove(name.IndexOf(IncrementalCounter.INC_COUNTER_PREFIX), IncrementalCounter.INC_COUNTER_PREFIX.Length);
                AddCounter(Name(name, unit), value.Count, tags, null);
                return;
            }

            long count = value.Count;

            if (name.Contains(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX))
            {
                string taggedName = "counter:" + TaggedMetricsRegistry.TagName(name, tags);
                if (reportOnUpdate.ContainsKey(taggedName))
                {
                    if (reportOnUpdate[taggedName] == count)
                    {
                        return;
                    }
                }
                reportOnUpdate[taggedName] = count;
                name = name.Remove(name.IndexOf(TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX), TaggedMetricsRegistry.REPORT_ON_UPDATE_PREFIX.Length);
            }

            if (value.Items.Length == 0)
            {
                AddCumulativeCounter(Name(name, unit), count, tags, null);
            }
            else
            {
                AddCumulativeCounter(SubfolderName(name, unit, "Total"), count, tags, null);
            }

            foreach (var item in value.Items)
            {
                AddCumulativeCounter(SubfolderName(name, unit, item.Item), item.Count, tags, null);
                AddGauge(SubfolderName(name, unit, item.Item, "Percent"), item.Percent, tags, MetricDetails.percent);
            }
        }