Hi,
I want to know if there is a way to split a single outboud Telegraf SSL connection into multiple connections/sessions.
The reasoning behind it: I am sending opentelemetry data into opentelemetry collector. The point is that in my case the opentelemetry collector is in fact a load-balancer with 6 backend servers behind it. If only one connection is in use, then there is not much load-balancing happening and there is a significant performance strain on one of the opentelemetry collector servers. Possibly I could use 6 opentelemetry output configuration statements to make it work, but then the problem is how to split the data into (more or less) equal parts. I don’t see any plugin that could potentially do it (maybe except some highly customized execd processor which is like “Code it Yourself” solution).
Any ideas are welcome.
It looks like the load balancer is not doing its work properly then. It should balance the incoming metrics over the 6 endpoints, which is not happening apparently.
Can’t blame load-balancer. Usually such devices work either on Network Layer 3/4 and/or Layer 6/7 - In this case the IP connection is the same all the time, so can’t distinguish metrics by IP nor port data, as for Layer 7 it’s all encrypted, so can’t do anything here either. The only thing that load-balancer can look at is the SSL session id (Layer 6), however as far as I can tell Telegraf only initiates one SSL session, so there is not much to load-balance here either.
Any other tips or ideas how to tackle the challange ?
Oh, it’s not a Layer 7 load-balancer then? Well only possible option in that case is request some load distribution as a feature request in telegraf. That way it would be possible to specify multiple endpoints which telegraf will do a Round-Robin on each flush-interval, similar like the influxdb output:
## The URLs of the InfluxDB cluster nodes.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
urls = ["http://127.0.0.1:8086"]