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); }
/// <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); }
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); } } }
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); }
/// <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); } }
protected override void ReportMeter(string name, MetricData.MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags) { ReportMeter(name, value, unit, rateUnit, tags, true); }