-
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
OTel Collector Fails Health Check on AWS App Runner with Minimal Config #37081
Comments
Hi @garysassano! It looks like one difference between the minimal config and the working one is the address of the otlp receiver. In the minimal config, this is set to Therefore, can you try to change the |
@bacherfl Your assumption was correct: changing Does this imply that the health check mechanism used by AWS App Runner sends requests from outside the machine? And would it be a bad thing to leave the OTLP/HTTP receiver with |
yes, it seems like the requests for the health checks are sent from outside the machine in this case. Leaving the endpoint at One more thing though, If possible I would recommend to use the
|
So you suggest that I should change the AWS App Runner health check listener from What is the primary advantage of performing the health check on the endpoint provided by the |
Exactly, setting it to TCP/13133 will change the health check to use the health check extension. I think the most notable difference here is that the health check extension will indicate that all of the components and thus the complete pipeline are ready. So for example, it could be that the otlp receiver endpoint is already up and running, while e.g. a processor or exporter is not fully initialised and ready. |
One issue with App Runner is that it doesn’t allow specifying a separate port for health checks; it requires using the same port where the service is listening. However, you can configure the health check to use a specific path. In this case, could I set the health check extension to use a path like |
Never mind, it's not possible: 01-09-2025 03:29:23 PM Error: cannot start pipelines: listen tcp 0.0.0.0:4318: bind: address already in use
01-09-2025 03:29:23 PM 2025/01/09 14:29:23 collector server run finished with error: cannot start pipelines: listen tcp 0.0.0.0:4318: bind: address already in use |
Problem Summary
I spent half a day trying to make the
opentelemetry-collector-contrib
work on AWS App Runner using its default health check configuration on/
path and port4318
:Despite multiple attempts with minimal configurations, the health check consistently failed. Eventually, I was only able to make it work by reverse-engineering the
opentelemetry-collector-config
default confmap from the logs and tweaking it. However, this resulted in a bloated configuration containing many components I don’t need.Investigation Process
Extracting Default Configuration
Since I couldn’t find the default configuration in this repository, I used the logs generated by the
opentelemetry-collector-config
default confmap and reverse-engineered it with Claude 3.5 Sonnet.(See image below for log details)
Reverse-Engineered Configuration
The resulting configuration included multiple receivers, exporters, and extensions, even though I only required OTLP.
Here’s the output I obtained (excluding Prometheus):
I then replaced the
debug
exporter with my actualotlp
exporter pointing to Honeycomb and finally got the setup working.I initially tried simplifying the configuration to only include the required OTLP components, as shown below:
However, this configuration failed the AWS App Runner health check.
Open Question
Why does the simplified configuration fail the App Runner health check while the bloated configuration doesn't?
Collector version
0.112.0
The text was updated successfully, but these errors were encountered: