protected override void ReportCounter(string name, MetricData.CounterValue value, Unit unit, MetricTags tags) { ItemValue item = null; if (null != ZabbixConfig) { ZabbixConfig.TryCreateTrapperItem(name, unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericUnsigned); } item = NewItemValue(name, value.Count); _sendQueue.Enqueue(item); if (value.Items != null && value.Items.Length != 0) { foreach (var itm in value.Items) { if (null != ZabbixConfig) { ZabbixConfig.TryCreateTrapperItem(SubfolderName(name, itm.Item), unit.ToString(), ZabbixApi.Entities.Item.ValueType.NumericUnsigned); ZabbixConfig.TryCreateTrapperItem(SubfolderNameAsPercent(name, itm.Item), Unit.Percent.ToString(), ZabbixApi.Entities.Item.ValueType.NumericFloat); } item = NewItemValue(SubfolderName(name, itm.Item), itm.Count); _sendQueue.Enqueue(item); item = NewItemValue(SubfolderNameAsPercent(name, itm.Item), itm.Percent); _sendQueue.Enqueue(item); } } }
protected override void ReportCounter(string name, MetricData.CounterValue value, Unit unit, MetricTags tags) { var itemColumns = value.Items.SelectMany(i => new[] { i.Item + " - Count", i.Item + " - Percent" }); var columns = CounterColumns.Concat(itemColumns); var itemValues = value.Items.SelectMany(i => new[] { Value(i.Count), Value(i.Percent) }); var data = new[] { Value(value.Count) }.Concat(itemValues); Pack(name, columns, data); }
/// <summary> /// Reports a counter metric. /// </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 ReportCounter(string name, MetricData.CounterValue value, Unit unit, MetricTags tags) { if (value.Items.Length == 0) { AddValue(name, value.Count, tags); } else { AddValue(name + ".total", value.Count, tags); } foreach (var item in value.Items) { AddValue(name + "." + item.Item, item.Count, tags); AddValue(name + "." + item.Item + ".percent", item.Percent, tags); } }
protected override void ReportCounter(string name, MetricData.CounterValue value, Unit unit, MetricTags tags) { if (!value.Items.Any()) { Pack(name, value.Count, tags); return; } var cols = new List <string>(new[] { "total" }); cols.AddRange(value.Items.Select(x => x.Item)); var data = new List <object>(new object[] { value.Count }); data.AddRange(value.Items.Select(x => (object)x.Count)); Pack(name, cols, data, tags); }