@cryptotaxi247 / netdata-1 / commits / 503629f6e

Fix data source option for Prometheus web API in exporting configuration (#10397)

Vladimir Kobal committed Jan 11, 2021 at 17:23 UTC 503629f6e9ca29b8a6abd5bebd5de52b50a14432
5 files changed +17 -3
backends/backends.c
+2
@@ -28,6 +28,7 @@
28 const char *global_backend_prefix = "netdata";
29 int global_backend_update_every = 10;
30 BACKEND_OPTIONS global_backend_options = BACKEND_SOURCE_DATA_AVERAGE | BACKEND_OPTION_SEND_NAMES;
31 +const char *global_backend_source = NULL;
32
33 // ----------------------------------------------------------------------------
34 // helper functions for backends
@@ -528,6 +529,7 @@ void *backends_main(void *ptr) {
529 // and prepare for sending data to our backend
530
531 global_backend_options = backend_parse_data_source(source, global_backend_options);
532 + global_backend_source = source;
533
534 if(timeoutms < 1) {
535 error("BACKEND: invalid timeout %ld ms given. Assuming %d ms.", timeoutms, global_backend_update_every * 2 * 1000);
backends/backends.h
+1
@@ -35,6 +35,7 @@ typedef int (**backend_request_formatter_t)(BUFFER *, const char *, RRDHOST *, c
35
36 extern int global_backend_update_every;
37 extern BACKEND_OPTIONS global_backend_options;
38 +extern const char *global_backend_source;
39 extern const char *global_backend_prefix;
40
41 extern void *backends_main(void *ptr);
exporting/exporting.conf
+1
@@ -5,6 +5,7 @@
5 # update every = 10
6
7 [prometheus:exporter]
8 + # data source = average
9 # send names instead of ids = yes
10 # send configured labels = yes
11 # send automatic labels = no
exporting/read_config.c
+12 -3
@@ -238,9 +238,18 @@ struct engine *read_exporting_config()
238 prometheus_exporter_instance->config.update_every =
239 prometheus_config_get_number(EXPORTING_UPDATE_EVERY_OPTION_NAME, EXPORTING_UPDATE_EVERY_DEFAULT);
240
241 - prometheus_exporter_instance->config.options |=
242 - global_backend_options &
243 - (EXPORTING_SOURCE_DATA_AS_COLLECTED | EXPORTING_SOURCE_DATA_AVERAGE | EXPORTING_SOURCE_DATA_SUM);
241 + // wait for backend subsystem to be initialized
242 + for (int retries = 0; !global_backend_source && retries < 1000; retries++)
243 + sleep_usec(10000);
244 +
245 + if (!global_backend_source)
246 + global_backend_source = "average";
247 +
248 + prometheus_exporter_instance->config.options |= global_backend_options & EXPORTING_OPTIONS_SOURCE_BITS;
249 +
250 + char *data_source = prometheus_config_get("data source", global_backend_source);
251 + prometheus_exporter_instance->config.options =
252 + exporting_parse_data_source(data_source, prometheus_exporter_instance->config.options);
253
254 if (prometheus_config_get_boolean(
255 "send names instead of ids", global_backend_options & EXPORTING_OPTION_SEND_NAMES))
exporting/tests/test_exporting_engine.c
+1
@@ -15,6 +15,7 @@ char *netdata_configured_hostname = "test_global_host";
15 char log_line[MAX_LOG_LINE + 1];
16
17 BACKEND_OPTIONS global_backend_options = 0;
18 +const char *global_backend_source = "average";
19 const char *global_backend_prefix = "netdata";
20
21 void init_connectors_in_tests(struct engine *engine)