-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[receiver/awsfirehosereceiver] Support receiving multiple record type using single endpoint #35988
Comments
Pinging code owners:
See Adding Labels via Comments if you do not have permissions to add labels yourself. |
I would strongly recommend simply using different ports for each signal type. The collector requires unique component instances per signal type, even for components that support multiple signal types, and the mechanism used by the OTLP receiver to support multiple signal types on the same port is generally considered a hack and may not be supported going forward. Beyond that, the type of configuration presented in the issue description here doesn't really fit in with the |
Agreed, I think @kaiyan-sheng was just showing what she tried to configure. It fails of course because two instances of the receiver cannot bind to the same host:port. The proposal would be to either get rid of the Minimal config would be something like: receivers:
awsfirehose:
endpoint: hostname:1234 So there would be no requirement for multiple receiver instances. |
I don't think this is viable. There are already three different record types supported for two different signal types and more can be added in the future. These formats are not self-describing and I'm not sure it would be advisable to attempt to unmarshal every inbound request with every type of unmarshaller. Rather than introducing more complexity locally why can the existing capability to listen on different ports not be used? |
Having multiple ports is an option, it's what we're currently doing. We're looking for a way to simplify our user experience. The goal is to have an experience similar to configuring an OTel SDK/collector for sending logs/metrics/traces/profiles to a single OTLP endpoint, regardless of the signal type or protobuf/JSON encoding. There's a bit of cognitive overhead in needing to know which URL/port to send to based on the signal type and encoding. Imagine you're creating a CloudWatch Metric Stream: if you change from the JSON encoding to OTLP 1.0, now you need to remember to use a different port. Instead of making it the user's problem, we'd like to offer a single Firehose endpoint which can determine the data format itself. It is possible to deduce the type by sniffing the data without attempting a full unmarshal of each type -- we've implemented this. To be fair though, that's not necessarily future proof. |
@Aneurysm9 This would not happen. The way I envision this going would be:
Does this sound OK to you? I am taking over the PR #36184, and I have come across this need because if we set a new record type Additionally the code and comments seem to not be up to date:
We do not have a default What do you think @Aneurysm9 ? |
Component(s)
receiver/awsfirehose
Is your feature request related to a problem? Please describe.
When trying to ingest both logs and metrics from Firehose, I tried with two receivers configured with the same endpoint:
This gave me an error:
In order to workaround this issue, I have to use two different endpoints, one for metrics and one for logs.
I would like to have a single endpoint to ingest both metrics and logs.
Describe the solution you'd like
We should be able to check what does the request from Firehose looks like and figure out if it's logs or metrics, if it's JSON format metrics or OTEL1.0 format metrics and then apply the right marshaling.
Describe alternatives you've considered
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: