Fixed Grafana / Tempo communication #46
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Grafana was no longer able to communicate with the Tempo backend after some config changes recently.
Checking the Grafana logs, I found
After some googling, this seemed to be an indicator that the client (Grafana) was trying to connect to the backend (Tempo) with http2, but the backend only supporting http1.1.
In particular, Tempo uses grpc for internal communication, but by default, exposes its grpc capabilities on the grpc port, 4317; However, we had Grafana connecting to the http port, 3200.
One option would be to expose the grpc port and use that, but it seems this is common enough that there's a built in flag for it.
This causes tempo to expose its grpc API over http; in particular, this means that the http2 request to initiate the grpc connection now succeeds. I chose to go with this approach, since that's the way the examples I saw were structured, and it's the first thing that worked.
See also this github discussion for context:
open-telemetry/opentelemetry-collector#7680
Note: I don't have a cardano node currently, so I wasn't able to test it with Amaru running; instead, I tested the tempo data source connection within Grafana itself, and I am assuming this is sufficient.
Before:
After: