summaryrefslogtreecommitdiffstats
path: root/web/api/exporters/allmetrics.c
diff options
context:
space:
mode:
Diffstat (limited to 'web/api/exporters/allmetrics.c')
-rw-r--r--web/api/exporters/allmetrics.c43
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;