/// <summary> /// Merge a Histogram's metrics into a map of name/values /// </summary> /// <param name="hist"></param> /// <param name="values"></param> public static void AddHistogramValues(this MetricData.HistogramValue hist, IDictionary <string, object> values) { values.Add("samples", hist.SampleSize); values.Add("last", hist.LastValue); values.Add("count.hist", hist.Count); values.Add("min", hist.Min); values.Add("max", hist.Max); values.Add("mean", hist.Mean); values.Add("median", hist.Median); values.Add("stddev", hist.StdDev); values.Add("p999", hist.Percentile999); values.Add("p99", hist.Percentile99); values.Add("p98", hist.Percentile98); values.Add("p95", hist.Percentile95); values.Add("p75", hist.Percentile75); if (hist.LastUserValue != null) { values.Add("user.last", hist.LastUserValue); } if (hist.MinUserValue != null) { values.Add("user.min", hist.MinUserValue); } if (hist.MaxUserValue != null) { values.Add("user.max", hist.MaxUserValue); } }
protected override void ReportHistogram(string name, MetricData.HistogramValue value, Unit unit, MetricTags tags) { var data = new Dictionary <string, object>(); value.AddHistogramValues(data); var keys = data.Keys.ToList(); var values = keys.Select(k => data[k]); Pack(name, keys, values, tags); }
protected void ReportHistogram(string name, MetricData.HistogramValue value, Unit unit, MetricTags tags, bool withMainCount) { ItemValue item = null; if (null != ZabbixConfig) { if (withMainCount) { ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Count"), Unit.None.ToString(), ZabbixApi.Entities.Item.ValueType.NumericUnsigned); } ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Last"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Min"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Mean"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Median"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Max"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "p75"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "p95"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "p98"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "p99"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "p999"), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "StdDev"), Unit.None.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Sample"), Unit.None.ToString(), ZabbixApi.Entities.Item.ValueType.NumericUnsigned); } if (withMainCount) { item = NewItemValue(SubfolderName(name, "Count"), value.Count); _sendQueue.Enqueue(item); } item = NewItemValue(SubfolderName(name, "Last"), value.LastValue); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "Min"), value.Min); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "Mean"), value.Mean); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "Median"), value.Median); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "Max"), value.Max); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "p75"), value.Percentile75); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "p95"), value.Percentile95); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "p98"), value.Percentile98); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "p99"), value.Percentile99); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "p999"), value.Percentile999); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "StdDev"), value.StdDev); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderName(name, "Sample"), value.SampleSize); _sendQueue.Enqueue(item); }
/// <summary> /// Reports a histogram. /// </summary> /// <param name="name">Metric name.</param> /// <param name="value">Value.</param> /// <param name="unit">Unit of measurement.</param> /// <param name="tags">Tags.</param> protected override void ReportHistogram(string name, MetricData.HistogramValue value, Unit unit, MetricTags tags) { AddValue(name + ".count", value.Count, tags); AddValue(name + ".last", value.LastValue, tags); AddValue(name + ".min", value.Min, tags); AddValue(name + ".avg", value.Mean, tags); AddValue(name + ".max", value.Max, tags); AddValue(name + ".stdDev", value.StdDev, tags); AddValue(name + ".median", value.Median, tags); AddValue(name + ".75percentile", value.Percentile75, tags); AddValue(name + ".95percentile", value.Percentile95, tags); AddValue(name + ".98percentile", value.Percentile98, tags); AddValue(name + ".99percentile", value.Percentile99, tags); AddValue(name + ".999percentile", value.Percentile999, tags); }
protected override void ReportHistogram(string name, MetricData.HistogramValue value, Unit unit, MetricTags tags) { Pack(name, HistogramColumns, new[] { Value(value.Count), Value(value.LastValue), Value(value.LastUserValue), Value(value.Min), Value(value.MinUserValue), Value(value.Mean), Value(value.Max), Value(value.MaxUserValue), Value(value.StdDev), Value(value.Median), Value(value.Percentile75), Value(value.Percentile95), Value(value.Percentile98), Value(value.Percentile99), Value(value.Percentile999), Value(value.SampleSize) }); }
protected override void ReportHistogram(string name, MetricData.HistogramValue value, Unit unit, MetricTags tags) { ReportHistogram(name, value, unit, tags, true); }