Skip to content

[exporter/loadbalancing] Add the ability to load balance by Metric stream ID #32513

Closed
@RichieSams

Description

@RichieSams

Component(s)

exporter/loadbalancing

Is your feature request related to a problem? Please describe.

The LoadBalancing exporter is a great idea. It currently exposes a number of ways to route metrics coming in:

const (
	traceIDRouting routingKey = iota
	svcRouting
	metricNameRouting
	resourceRouting
)

However, there are many situation where these routing methods can lead to non-uniform distributions of metrics. For example, if datapoints use lots of labels, or med to high cardinality labels. The finest grain routing we can currently do is metric name routing. But if the majority of the datapoints are all the same metric name, then this doesn't help.

Describe the solution you'd like

I would like to propose adding a new value to the routing enum: streamIDRouting. This would route individual datapoints based on their unique ID. We could use the new internal/exp/metrics/identity package: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/internal/exp/metrics/identity/stream.go#L29

I'm willing to be the implementer

Describe alternatives you've considered

No response

Additional context

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions