Allow the remote write configuration have multiple destinations (#11005)
Vladimir Kobal committed
Apr 21, 2021 at 19:02 UTC
0d5781ed7c19bc49a241defeeb8273c368be0396
4 files changed
+15
-4
exporting/exporting_engine.h
+4
@@ -98,9 +98,13 @@ struct simple_connector_buffer {
98
struct simple_connector_buffer *next;
99
};
100
101
+#define CONNECTED_TO_MAX 1024
102
+
103
struct simple_connector_data {
104
void *connector_specific_data;
105
106
+ char connected_to[CONNECTED_TO_MAX];
107
+
108
size_t total_buffered_metrics;
109
110
BUFFER *header;
exporting/prometheus/remote_write/remote_write.c
+1
-1
@@ -31,7 +31,7 @@ void prometheus_remote_write_prepare_header(struct instance *instance)
31
"Content-Length: %zu\r\n"
32
"\r\n",
33
connector_specific_config->remote_write_path,
34
- instance->config.destination,
34
+ simple_connector_data->connected_to,
35
buffer_strlen(simple_connector_data->last_buffer->buffer));
36
}
37
exporting/send_data.c
+6
-1
@@ -314,7 +314,12 @@ void simple_connector_worker(void *instance_p)
314
size_t reconnects = 0;
315
316
sock = connect_to_one_of(
317
- instance->config.destination, connector_specific_config->default_port, &timeout, &reconnects, NULL, 0);
317
+ instance->config.destination,
318
+ connector_specific_config->default_port,
319
+ &timeout,
320
+ &reconnects,
321
+ connector_specific_data->connected_to,
322
+ CONNECTED_TO_MAX);
323
#ifdef ENABLE_HTTPS
324
if (exporting_tls_is_enabled(instance->config.type, options) && sock != -1) {
325
if (netdata_exporting_ctx) {
exporting/tests/test_exporting_engine.c
+4
-2
@@ -618,6 +618,7 @@ static void test_simple_connector_worker(void **state)
618
simple_connector_data->buffer = buffer_create(0);
619
simple_connector_data->last_buffer->header = buffer_create(0);
620
simple_connector_data->last_buffer->buffer = buffer_create(0);
621
+ strcpy(simple_connector_data->connected_to, "localhost");
622
623
buffer_sprintf(simple_connector_data->last_buffer->header, "test header");
624
buffer_sprintf(simple_connector_data->last_buffer->buffer, "test buffer");
@@ -626,8 +627,8 @@ static void test_simple_connector_worker(void **state)
627
expect_string(__wrap_connect_to_one_of, destination, "localhost");
628
expect_value(__wrap_connect_to_one_of, default_port, 2003);
629
expect_not_value(__wrap_connect_to_one_of, reconnects_counter, 0);
629
- expect_value(__wrap_connect_to_one_of, connected_to, 0);
630
- expect_value(__wrap_connect_to_one_of, connected_to_size, 0);
630
+ expect_string(__wrap_connect_to_one_of, connected_to, "localhost");
631
+ expect_value(__wrap_connect_to_one_of, connected_to_size, CONNECTED_TO_MAX);
632
will_return(__wrap_connect_to_one_of, 2);
633
634
expect_function_call(__wrap_send);
@@ -1170,6 +1171,7 @@ static void test_prometheus_remote_write_prepare_header(void **state)
1171
simple_connector_data->last_buffer = callocz(1, sizeof(struct simple_connector_buffer));
1172
simple_connector_data->last_buffer->header = buffer_create(0);
1173
simple_connector_data->last_buffer->buffer = buffer_create(0);
1174
+ strcpy(simple_connector_data->connected_to, "localhost");
1175
1176
buffer_sprintf(simple_connector_data->last_buffer->buffer, "test buffer");
1177