Troubleshoot by Symptom: z-request-id Pinpoints 401 / 502 / Broken Streams
Trace 401 / 403 / 404 / 502 / 503 / timeout / broken stream / OOM by z-request-id end to end — no more guessing.
What the community actually complains about
High-frequency StackOverflow questions: "streaming response turned into one blob after the proxy," "tool-calling JSON won't assemble," "is this 429 rate-limit or quota-exceeded," "is this 502 the gateway or the vendor." AI-call troubleshooting is hard: multi-hop paths, streaming, inconsistent error codes — when something breaks you don't know which hop.
How GateLLM does it
GateLLM assigns each request a z-request-id that threads through the whole log, so you locate by symptom: 401 / 403 → auth and Header ACL; 404 → routing; 502 / 503 → upstream health; timeout → rate limit and cross-ocean; broken stream → buffering and SSE; OOM → config. Error codes are normalized (cross-vendor error semantics unified), streaming passes through natively without buffering, and Token Ops logs are queryable and exportable.
5 levers that actually land
- z-request-id threads through the whole log — locate by id in one step
- Triage by symptom: 401 / 403 / 404 / 502 / 503 / timeout / broken stream / OOM
- Error-code normalization: cross-vendor error semantics unified to one vocabulary
- Native stream pass-through, no buffering, no breaking SSE or tool calling
- Token Ops logs queryable and exportable, wired into troubleshooting and reconciliation