diff options
Diffstat (limited to 'web/api/exporters/allmetrics.c')
-rw-r--r-- | web/api/exporters/allmetrics.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/web/api/exporters/allmetrics.c b/web/api/exporters/allmetrics.c index 686a6cabc..d10de3d3c 100644 --- a/web/api/exporters/allmetrics.c +++ b/web/api/exporters/allmetrics.c @@ -6,23 +6,36 @@ struct prometheus_output_options { char *name; PROMETHEUS_OUTPUT_OPTIONS flag; } prometheus_output_flags_root[] = { - { "help", PROMETHEUS_OUTPUT_HELP }, - { "types", PROMETHEUS_OUTPUT_TYPES }, - { "names", PROMETHEUS_OUTPUT_NAMES }, - { "timestamps", PROMETHEUS_OUTPUT_TIMESTAMPS }, - { "variables", PROMETHEUS_OUTPUT_VARIABLES }, - { "oldunits", PROMETHEUS_OUTPUT_OLDUNITS }, - { "hideunits", PROMETHEUS_OUTPUT_HIDEUNITS }, - // terminator - { NULL, PROMETHEUS_OUTPUT_NONE }, + { "help", PROMETHEUS_OUTPUT_HELP }, + { "types", PROMETHEUS_OUTPUT_TYPES }, + { "names", PROMETHEUS_OUTPUT_NAMES }, + { "timestamps", PROMETHEUS_OUTPUT_TIMESTAMPS }, + { "variables", PROMETHEUS_OUTPUT_VARIABLES }, + { "oldunits", PROMETHEUS_OUTPUT_OLDUNITS }, + { "hideunits", PROMETHEUS_OUTPUT_HIDEUNITS }, + // terminator + { NULL, PROMETHEUS_OUTPUT_NONE }, }; inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client *w, char *url) { int format = ALLMETRICS_SHELL; const char *prometheus_server = w->client_ip; - uint32_t prometheus_backend_options = global_backend_options; - PROMETHEUS_OUTPUT_OPTIONS prometheus_output_options = PROMETHEUS_OUTPUT_TIMESTAMPS | ((global_backend_options & BACKEND_OPTION_SEND_NAMES)?PROMETHEUS_OUTPUT_NAMES:0); - const char *prometheus_prefix = global_backend_prefix; + + uint32_t prometheus_exporting_options; + if (prometheus_exporter_instance) + prometheus_exporting_options = prometheus_exporter_instance->config.options; + else + prometheus_exporting_options = global_backend_options; + + PROMETHEUS_OUTPUT_OPTIONS prometheus_output_options = + PROMETHEUS_OUTPUT_TIMESTAMPS | + ((prometheus_exporting_options & BACKEND_OPTION_SEND_NAMES) ? PROMETHEUS_OUTPUT_NAMES : 0); + + const char *prometheus_prefix; + if (prometheus_exporter_instance) + prometheus_prefix = prometheus_exporter_instance->config.prefix; + else + prometheus_prefix = global_backend_prefix; while(url) { char *value = mystrsep(&url, "&"); @@ -51,7 +64,7 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client prometheus_prefix = value; } else if(!strcmp(name, "data") || !strcmp(name, "source") || !strcmp(name, "data source") || !strcmp(name, "data-source") || !strcmp(name, "data_source") || !strcmp(name, "datasource")) { - prometheus_backend_options = backend_parse_data_source(value, prometheus_backend_options); + prometheus_exporting_options = backend_parse_data_source(value, prometheus_exporting_options); } else { int i; @@ -89,7 +102,7 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client , w->response.data , prometheus_server , prometheus_prefix - , prometheus_backend_options + , prometheus_exporting_options , prometheus_output_options ); return HTTP_RESP_OK; @@ -101,7 +114,7 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client , w->response.data , prometheus_server , prometheus_prefix - , prometheus_backend_options + , prometheus_exporting_options , prometheus_output_options ); return HTTP_RESP_OK; |