예제 #1
0
        protected override void ReportMeter(string name, MetricData.MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            var itemColumns = value.Items.SelectMany(i => new[]
            {
                i.Item + " - Count",
                i.Item + " - Percent",
                i.Item + " - Mean Rate",
                i.Item + " - 1 Min Rate",
                i.Item + " - 5 Min Rate",
                i.Item + " - 15 Min Rate"
            });
            var columns = MeterColumns.Concat(itemColumns);

            var itemValues = value.Items.SelectMany(i => new[]
            {
                Value(i.Value.Count),
                Value(i.Percent),
                Value(i.Value.MeanRate),
                Value(i.Value.OneMinuteRate),
                Value(i.Value.FiveMinuteRate),
                Value(i.Value.FifteenMinuteRate)
            });

            var data = new[]
            {
                Value(value.Count),
                Value(value.MeanRate),
                Value(value.OneMinuteRate),
                Value(value.FiveMinuteRate),
                Value(value.FifteenMinuteRate)
            }.Concat(itemValues);

            Pack(name, columns, data);
        }
예제 #2
0
 /// <summary>
 /// Merge a Meter's metrics into a map of name/values
 /// </summary>
 /// <param name="meter"></param>
 /// <param name="values"></param>
 public static void AddMeterValues(this MetricData.MeterValue meter, IDictionary <string, object> values)
 {
     values.Add("count.meter", meter.Count);
     values.Add("rate1m", meter.OneMinuteRate);
     values.Add("rate5m", meter.FiveMinuteRate);
     values.Add("rate15m", meter.FifteenMinuteRate);
     values.Add("rate.mean", meter.MeanRate);
 }
예제 #3
0
        protected void ReportMeter(string name, MetricData.MeterValue value, Unit unit, TimeUnit rateUnit, 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, "Rate-Mean"), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Rate-1-min"), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Rate-5-min"), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, "Rate-15-min"), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
            }
            if (withMainCount)
            {
                item = NewItemValue(SubfolderName(name, "Count"), value.Count);
                _sendQueue.Enqueue(item);
            }
            item = NewItemValue(SubfolderName(name, "Rate-Mean"), value.MeanRate);
            _sendQueue.Enqueue(item);
            item = NewItemValue(SubfolderName(name, "Rate-1-min"), value.OneMinuteRate);
            _sendQueue.Enqueue(item);
            item = NewItemValue(SubfolderName(name, "Rate-5-min"), value.FiveMinuteRate);
            _sendQueue.Enqueue(item);
            item = NewItemValue(SubfolderName(name, "Rate-15-min"), value.FifteenMinuteRate);
            _sendQueue.Enqueue(item);
            if (value.Items != null && value.Items.Length != 0)
            {
                foreach (var itm in value.Items)
                {
                    if (null != ZabbixConfig)
                    {
                        ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, SubfolderName(itm.Item, "Count")), Unit.None.ToString(), ZabbixApi.Entities.Item.ValueType.NumericUnsigned);
                        ZabbixConfig.TryCreateTrapperItem(SubfolderNameAsPercent(name, itm.Item), Unit.Percent.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                        ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, SubfolderName(itm.Item, "Rate-Mean")), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                        ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, SubfolderName(itm.Item, "Rate-1-min")), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                        ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, SubfolderName(itm.Item, "Rate-5-min")), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                        ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, SubfolderName(itm.Item, "Rate-15-min")), rateUnit.Unit().ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat);
                    }
                    item = NewItemValue(SubfolderName(name, SubfolderName(itm.Item, "Count")), itm.Value.Count);
                    _sendQueue.Enqueue(item);
                    item = NewItemValue(SubfolderNameAsPercent(name, itm.Item), itm.Percent);
                    _sendQueue.Enqueue(item);
                    item = NewItemValue(SubfolderName(name, SubfolderName(itm.Item, "Rate-Mean")), itm.Value.MeanRate);
                    _sendQueue.Enqueue(item);
                    item = NewItemValue(SubfolderName(name, SubfolderName(itm.Item, "Rate-1-min")), itm.Value.OneMinuteRate);
                    _sendQueue.Enqueue(item);
                    item = NewItemValue(SubfolderName(name, SubfolderName(itm.Item, "Rate-5-min")), itm.Value.FiveMinuteRate);
                    _sendQueue.Enqueue(item);
                    item = NewItemValue(SubfolderName(name, SubfolderName(itm.Item, "Rate-15-min")), itm.Value.FifteenMinuteRate);
                    _sendQueue.Enqueue(item);
                }
            }
        }
예제 #4
0
        protected override void ReportMeter(string name, MetricData.MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            var data = new Dictionary <string, object>();

            value.AddMeterValues(data);

            var keys   = data.Keys.ToList();
            var values = keys.Select(k => data[k]);

            Pack(name, keys, values, tags);
        }
예제 #5
0
        /// <summary>
        /// Reports a meter.
        /// </summary>
        /// <param name="name">Metric name.</param>
        /// <param name="value">Value.</param>
        /// <param name="unit">Unit of measurement for the count metric.</param>
        /// <param name="rateUnit">Unit of measurement for the rate metrics.</param>
        /// <param name="tags">Tags.</param>
        protected override void ReportMeter(string name, MetricData.MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            AddValue(name + ".count", value.Count, tags);
            AddValue(name + ".avg", value.MeanRate, tags);
            AddValue(name + ".1m", value.OneMinuteRate, tags);
            AddValue(name + ".5m", value.FiveMinuteRate, tags);
            AddValue(name + ".15m", value.FifteenMinuteRate, tags);

            foreach (var item in value.Items)
            {
                AddValue(name + "." + item.Item + ".count", item.Value.Count, tags);
                AddValue(name + "." + item.Item + ".percent", item.Percent, tags);
                AddValue(name + "." + item.Item + ".avg", item.Value.MeanRate, tags);
                AddValue(name + "." + item.Item + ".1m", item.Value.OneMinuteRate, tags);
                AddValue(name + "." + item.Item + ".5m", item.Value.FiveMinuteRate, tags);
                AddValue(name + "." + item.Item + ".15m", item.Value.FifteenMinuteRate, tags);
            }
        }
예제 #6
0
 protected override void ReportMeter(string name, MetricData.MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
 {
     ReportMeter(name, value, unit, rateUnit, tags, true);
 }