From aa49687601abbefbb97f5d5ebf116518c1db99f4 Mon Sep 17 00:00:00 2001 From: "Costa Tsaousis (ktsaou)" Date: Tue, 3 Jan 2017 23:56:07 +0200 Subject: [PATCH] added the VISIBLETOTAL variable and fixed the error message about an invalid format being requested --- src/rrd2json.c | 7 +++++-- src/web_client.c | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/rrd2json.c b/src/rrd2json.c index fc7bef20..a5d65152 100644 --- a/src/rrd2json.c +++ b/src/rrd2json.c @@ -229,6 +229,7 @@ void rrd_stats_api_v1_charts_allmetrics_shell(BUFFER *wb) // for each chart RRDSET *st; for(st = localhost.rrdset_root; st ; st = st->next) { + calculated_number total = 0.0; char chart[BASH_ELEMENT_MAX + 1]; shell_name_copy(chart, st->id, BASH_ELEMENT_MAX); @@ -244,18 +245,20 @@ void rrd_stats_api_v1_charts_allmetrics_shell(BUFFER *wb) shell_name_copy(dimension, rd->id, BASH_ELEMENT_MAX); calculated_number n = rd->last_stored_value; - if(rd->multiplier < 0 || rd->divisor < 0) - n = -n; if(isnan(n) || isinf(n)) buffer_sprintf(wb, "NETDATA_%s_%s=\"\" # %s\n", chart, dimension, st->units); else { + if(rd->multiplier < 0 || rd->divisor < 0) n = -n; n = roundl(n); + if(!(rd->flags & RRDDIM_FLAG_HIDDEN)) total += n; buffer_sprintf(wb, "NETDATA_%s_%s=\"%0.0Lf\" # %s\n", chart, dimension, n, st->units); } } } + total = roundl(total); + buffer_sprintf(wb, "NETDATA_%s_VISIBLETOTAL=\"%0.0Lf\" # %s\n", chart, total, st->units); pthread_rwlock_unlock(&st->rwlock); } } diff --git a/src/web_client.c b/src/web_client.c index e5721c0d..f7bf2e5a 100644 --- a/src/web_client.c +++ b/src/web_client.c @@ -791,6 +791,8 @@ int web_client_api_request_v1_allmetrics(struct web_client *w, char *url) format = ALLMETRICS_SHELL; else if(!strcmp(value, ALLMETRICS_FORMAT_PROMETHEUS)) format = ALLMETRICS_PROMETHEUS; + else + format = 0; } } @@ -810,7 +812,7 @@ int web_client_api_request_v1_allmetrics(struct web_client *w, char *url) default: w->response.data->contenttype = CT_TEXT_PLAIN; - buffer_strcat(w->response.data, "Which format? Only '" ALLMETRICS_FORMAT_PROMETHEUS "' is currently supported."); + buffer_strcat(w->response.data, "Which format? Only '" ALLMETRICS_FORMAT_SHELL "' and '" ALLMETRICS_FORMAT_PROMETHEUS "' is currently supported."); return 400; } } -- 2.39.2