summaryrefslogtreecommitdiffstats
path: root/web/api/formatters/value
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 11:19:16 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:07:37 +0000
commitb485aab7e71c1625cfc27e0f92c9509f42378458 (patch)
treeae9abe108601079d1679194de237c9a435ae5b55 /web/api/formatters/value
parentAdding upstream version 1.44.3. (diff)
downloadnetdata-b485aab7e71c1625cfc27e0f92c9509f42378458.tar.xz
netdata-b485aab7e71c1625cfc27e0f92c9509f42378458.zip
Adding upstream version 1.45.3+dfsg.upstream/1.45.3+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/api/formatters/value')
-rw-r--r--web/api/formatters/value/Makefile.am8
-rw-r--r--web/api/formatters/value/README.md28
-rw-r--r--web/api/formatters/value/value.c151
-rw-r--r--web/api/formatters/value/value.h33
4 files changed, 0 insertions, 220 deletions
diff --git a/web/api/formatters/value/Makefile.am b/web/api/formatters/value/Makefile.am
deleted file mode 100644
index 161784b8f..000000000
--- a/web/api/formatters/value/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-AUTOMAKE_OPTIONS = subdir-objects
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-
-dist_noinst_DATA = \
- README.md \
- $(NULL)
diff --git a/web/api/formatters/value/README.md b/web/api/formatters/value/README.md
deleted file mode 100644
index 5631d8207..000000000
--- a/web/api/formatters/value/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-title: "Value formatter"
-custom_edit_url: https://github.com/netdata/netdata/edit/master/web/api/formatters/value/README.md
-sidebar_label: "Value formatter"
-learn_status: "Published"
-learn_topic_type: "References"
-learn_rel_path: "Developers/Web/Api/Formatters"
--->
-
-# Value formatter
-
-The Value formatter presents [results of database queries](https://github.com/netdata/netdata/blob/master/web/api/queries/README.md) as a single value.
-
-To calculate the single value to be returned, it sums the values of all dimensions.
-
-The Value formatter respects the following API `&options=`:
-
-| option | supported | description |
-|:----: |:-------: |:---------- |
-| `percent` | yes | to replace all values with their percentage over the row total|
-| `abs` | yes | to turn all values positive, before using them |
-| `min2max` | yes | to return the delta from the minimum value to the maximum value (across dimensions)|
-
-The Value formatter is not exposed by the API by itself.
-Instead it is used by the [`ssv`](https://github.com/netdata/netdata/blob/master/web/api/formatters/ssv/README.md) formatter
-and [health monitoring queries](https://github.com/netdata/netdata/blob/master/health/README.md).
-
-
diff --git a/web/api/formatters/value/value.c b/web/api/formatters/value/value.c
deleted file mode 100644
index 1d07f62f6..000000000
--- a/web/api/formatters/value/value.c
+++ /dev/null
@@ -1,151 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#include "value.h"
-
-
-inline NETDATA_DOUBLE rrdr2value(RRDR *r, long i, RRDR_OPTIONS options, int *all_values_are_null, NETDATA_DOUBLE *anomaly_rate) {
- size_t c;
-
- NETDATA_DOUBLE *cn = &r->v[ i * r->d ];
- RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ];
- NETDATA_DOUBLE *ar = &r->ar[ i * r->d ];
-
- NETDATA_DOUBLE sum = 0, min = 0, max = 0, v;
- int all_null = 1, init = 1;
-
- NETDATA_DOUBLE total_anomaly_rate = 0;
-
- // for each dimension
- for (c = 0; c < r->d ; c++) {
- if(!rrdr_dimension_should_be_exposed(r->od[c], options))
- continue;
-
- NETDATA_DOUBLE n = cn[c];
-
- if(unlikely(init)) {
- if(n > 0) {
- min = 0;
- max = n;
- }
- else {
- min = n;
- max = 0;
- }
- init = 0;
- }
-
- if(likely(!(co[c] & RRDR_VALUE_EMPTY))) {
- all_null = 0;
- sum += n;
- }
-
- if(n < min) min = n;
- if(n > max) max = n;
-
- total_anomaly_rate += ar[c];
- }
-
- if(anomaly_rate) {
- if(!r->d) *anomaly_rate = 0;
- else *anomaly_rate = total_anomaly_rate / (NETDATA_DOUBLE)r->d;
- }
-
- if(unlikely(all_null)) {
- if(likely(all_values_are_null))
- *all_values_are_null = 1;
- return 0;
- }
- else {
- if(likely(all_values_are_null))
- *all_values_are_null = 0;
- }
-
- if(options & RRDR_OPTION_MIN2MAX)
- v = max - min;
- else
- v = sum;
-
- return v;
-}
-
-QUERY_VALUE rrdmetric2value(RRDHOST *host,
- struct rrdcontext_acquired *rca, struct rrdinstance_acquired *ria, struct rrdmetric_acquired *rma,
- time_t after, time_t before,
- RRDR_OPTIONS options, RRDR_TIME_GROUPING time_group_method, const char *time_group_options,
- size_t tier, time_t timeout, QUERY_SOURCE query_source, STORAGE_PRIORITY priority
-) {
- QUERY_TARGET_REQUEST qtr = {
- .version = 1,
- .host = host,
- .rca = rca,
- .ria = ria,
- .rma = rma,
- .after = after,
- .before = before,
- .points = 1,
- .options = options,
- .time_group_method = time_group_method,
- .time_group_options = time_group_options,
- .tier = tier,
- .timeout_ms = timeout,
- .query_source = query_source,
- .priority = priority,
- };
-
- ONEWAYALLOC *owa = onewayalloc_create(16 * 1024);
- QUERY_TARGET *qt = query_target_create(&qtr);
- RRDR *r = rrd2rrdr(owa, qt);
-
- QUERY_VALUE qv;
-
- if(!r || rrdr_rows(r) == 0) {
- qv = (QUERY_VALUE) {
- .value = NAN,
- .anomaly_rate = NAN,
- .sp = {
- .count = 0,
- .min = NAN,
- .max = NAN,
- .sum = NAN,
- .anomaly_count = 0,
- },
- .duration_ut = (r) ? r->internal.qt->timings.executed_ut - r->internal.qt->timings.received_ut : 0,
- };
- }
- else {
- qv = (QUERY_VALUE) {
- .after = r->view.after,
- .before = r->view.before,
- .points_read = r->stats.db_points_read,
- .result_points = r->stats.result_points_generated,
- .sp = {
- .count = 0,
- },
- .duration_ut = r->internal.qt->timings.executed_ut - r->internal.qt->timings.received_ut,
- };
-
- for(size_t d = 0; d < r->internal.qt->query.used ;d++) {
- if(!rrdr_dimension_should_be_exposed(r->internal.qt->query.array[d].status, options))
- continue;
-
- storage_point_merge_to(qv.sp, r->internal.qt->query.array[d].query_points);
- }
-
- for(size_t t = 0; t < storage_tiers ;t++)
- qv.storage_points_per_tier[t] = r->internal.qt->db.tiers[t].points;
-
- long i = (!(options & RRDR_OPTION_REVERSED))?(long)rrdr_rows(r) - 1:0;
- int all_values_are_null = 0;
- qv.value = rrdr2value(r, i, options, &all_values_are_null, &qv.anomaly_rate);
- if(all_values_are_null) {
- qv.value = NAN;
- qv.anomaly_rate = NAN;
- }
- }
-
- rrdr_free(owa, r);
- query_target_release(qt);
- onewayalloc_destroy(owa);
-
- return qv;
-}
diff --git a/web/api/formatters/value/value.h b/web/api/formatters/value/value.h
deleted file mode 100644
index 072ca14f8..000000000
--- a/web/api/formatters/value/value.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#ifndef NETDATA_API_FORMATTER_VALUE_H
-#define NETDATA_API_FORMATTER_VALUE_H
-
-#include "../rrd2json.h"
-
-typedef struct storage_value {
- NETDATA_DOUBLE value;
- NETDATA_DOUBLE anomaly_rate;
- time_t after;
- time_t before;
- size_t points_read;
- size_t storage_points_per_tier[RRD_STORAGE_TIERS];
- size_t result_points;
- STORAGE_POINT sp;
- usec_t duration_ut;
-} QUERY_VALUE;
-
-struct rrdmetric_acquired;
-struct rrdinstance_acquired;
-struct rrdcontext_acquired;
-
-QUERY_VALUE rrdmetric2value(RRDHOST *host,
- struct rrdcontext_acquired *rca, struct rrdinstance_acquired *ria, struct rrdmetric_acquired *rma,
- time_t after, time_t before,
- RRDR_OPTIONS options, RRDR_TIME_GROUPING time_group_method, const char *time_group_options,
- size_t tier, time_t timeout, QUERY_SOURCE query_source, STORAGE_PRIORITY priority
-);
-
-NETDATA_DOUBLE rrdr2value(RRDR *r, long i, RRDR_OPTIONS options, int *all_values_are_null, NETDATA_DOUBLE *anomaly_rate);
-
-#endif //NETDATA_API_FORMATTER_VALUE_H