summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/core/stat_item.h1
-rw-r--r--src/stats_statsd.c12
-rw-r--r--src/vty/utils.c5
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_statsd.c b/src/stats_statsd.c
index c76f8f69..b93d90a7 100644
--- a/src/stats_statsd.c
+++ b/src/stats_statsd.c
@@ -151,8 +151,18 @@ 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)
{
+ 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);
}
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;
}