{"slug": "uploading-a-large-opentelemetry-trace-to-a-local-otlp-http-traces-receiver", "title": "Uploading a large OpenTelemetry trace to a local OTLP/HTTP traces receiver", "summary": "A developer working on Renovate performance found that ~30MB OpenTelemetry traces exceeded HTTP size limits when ingested into a local Jaeger instance, and resolved it by streaming each line of /tmp/traces.jsonl into curl via a herestring to http://localhost:4318/v1/traces instead of passing the payload as a shell argument. The fix, developed with assistance from Claude Sonnet 5, updates the Renovate OpenTelemetry documentation's file-exporter guidance, which previously did not handle the size limits.", "body_md": "I've recently been doing some work with improving the performance of [Renovate](https://docs.renovatebot.com/) on larger repositories.\n\nTo guide this investigation, I'm leveraging our [OpenTelemetry support](https://docs.renovatebot.com/opentelemetry/) to more meaningfully understand how Renovate operates in parts of the codebase, and hone in on areas of improvement.\n\nOne of the repositories I'm running these tests is particularly large, and leads to traces of roughly ~30MB in size.\n\nWhen trying to ingest them into my local [Jaeger instance](https://www.jaegertracing.io/), I hit HTTP size limits, and [the documentation I'd written in the past (with help from Claude Sonnet 5) for ingesting these](https://github.com/renovatebot/renovate/blob/d706bb2e25353fec2e39db46f3e0db219da6aa79/docs/usage/opentelemetry.md#file-exporter) doesn't seem to handle the size limits.\n\nWith a bit of tweaking with Claude Sonnet 5, this is now better handled with:\n\n```\nwhile IFS= read -r line || [ -n \"$line\" ]; do\n curl -s -X POST http://localhost:4318/v1/traces \\\n -H 'Content-Type: application/json' \\\n --data-binary @- <<< \"$line\"\ndone < /tmp/traces.jsonl\n```\n\nNotice 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.\n\nWith this few-liner this leads to us being able to ingest very large traces!", "url": "https://wpnews.pro/news/uploading-a-large-opentelemetry-trace-to-a-local-otlp-http-traces-receiver", "canonical_source": "https://www.jvt.me/posts/2026/09/30/large-otel/?utm_medium=rss&utm_source=rss", "published_at": "2026-09-30 17:33:46+00:00", "updated_at": "2026-09-30 17:48:13.185303+00:00", "lang": "en", "topics": ["developer-tools", "mlops"], "entities": ["Renovate", "OpenTelemetry", "Jaeger", "Claude Sonnet 5", "curl"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/uploading-a-large-opentelemetry-trace-to-a-local-otlp-http-traces-receiver", "markdown": "https://wpnews.pro/news/uploading-a-large-opentelemetry-trace-to-a-local-otlp-http-traces-receiver.md", "text": "https://wpnews.pro/news/uploading-a-large-opentelemetry-trace-to-a-local-otlp-http-traces-receiver.txt", "jsonld": "https://wpnews.pro/news/uploading-a-large-opentelemetry-trace-to-a-local-otlp-http-traces-receiver.jsonld"}}