From 70fcbda6dd733a503e9a046e01986d8bfc2e2bb2 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Fri, 27 Nov 2015 18:54:58 +0100 Subject: stat: Explicitly support stat_items without unit Add OSMO_STAT_ITEM_NO_UNIT for stat items without an unit. The statsd reporter uses gauges ("g") to report them. Sponsored-by: On-Waves ehf [hfreyther: Manually apply change to osmo_stats_reporter_statsd_send_item] --- include/osmocom/core/stat_item.h | 1 + src/stats.c | 12 +++++++++++- src/vty/utils.c | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/osmocom/core/stat_item.h b/include/osmocom/core/stat_item.h index c1466f8c..b3a3d9c2 100644 --- a/include/osmocom/core/stat_item.h +++ b/include/osmocom/core/stat_item.h @@ -13,6 +13,7 @@ struct osmo_stat_item_desc; #define STAT_ITEM_NOVALUE_ID 0 +#define OSMO_STAT_ITEM_NO_UNIT NULL struct osmo_stat_item_value { int32_t id; diff --git a/src/stats.c b/src/stats.c index 16e2971d..2ebac364 100644 --- a/src/stats.c +++ b/src/stats.c @@ -558,10 +558,20 @@ static int osmo_stats_reporter_statsd_send_item(struct osmo_stats_reporter *srep const struct osmo_stat_item_group *statg, const struct osmo_stat_item_desc *desc, int value) { + const char *unit = desc->unit; + + if (unit == OSMO_STAT_ITEM_NO_UNIT) { + unit = "g"; + if (value < 0) + osmo_stats_reporter_statsd_send(srep, + statg->desc->group_name_prefix, + statg->idx, + desc->name, 0, unit); + } return osmo_stats_reporter_statsd_send(srep, statg->desc->group_name_prefix, statg->idx, - desc->name, value, desc->unit); + desc->name, value, unit); } /*** generic rate counter support ***/ diff --git a/src/vty/utils.c b/src/vty/utils.c index b15c8d84..3a0f138b 100644 --- a/src/vty/utils.c +++ b/src/vty/utils.c @@ -87,11 +87,14 @@ static int osmo_stat_item_handler( { struct vty_out_context *vctx = vctx_; struct vty *vty = vctx->vty; + const char *unit = + item->desc->unit != OSMO_STAT_ITEM_NO_UNIT ? + item->desc->unit : ""; vty_out(vty, " %s%s: %8" PRIi32 " %s%s", vctx->prefix, item->desc->description, osmo_stat_item_get_last(item), - item->desc->unit, VTY_NEWLINE); + unit, VTY_NEWLINE); return 0; } -- cgit v1.2.3