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); } }
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); }
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); }
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); } }