on
CC-BY-NC-SA-4.0 Apache-2.0
1 mins
π€ This post includes some LLM-derived content π€
Uploading a large OpenTelemetry trace to a local OTLP/HTTP traces receiver

I've recently been doing some work with improving the performance of Renovate on larger repositories.
To guide this investigation, I'm leveraging our OpenTelemetry support to more meaningfully understand how Renovate operates in parts of the codebase, and hone in on areas of improvement.
One of the repositories I'm running these tests is particularly large, and leads to traces of roughly ~30MB in size.
When trying to ingest them into my local Jaeger instance, I hit HTTP size limits, and the documentation I'd written in the past (with help from Claude Sonnet 5) for ingesting these doesn't seem to handle the size limits.
With a bit of tweaking with Claude Sonnet 5, this is now better handled with:
while IFS= read -r line || [ -n "$line" ]; do
curl -s -X POST http://localhost:4318/v1/traces \
-H 'Content-Type: application/json' \
--data-binary @- <<< "$line"
done < /tmp/traces.jsonl
Notice that we redirect (via a herestring) the line's contents in via stdin, instead of passing it as an argument, which is what led to the shell crashing.
With this few-liner this leads to us being able to ingest very large traces!