Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
 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)
     });
 }
Пример #6
0
 protected override void ReportHistogram(string name, MetricData.HistogramValue value, Unit unit, MetricTags tags)
 {
     ReportHistogram(name, value, unit, tags, true);
 }