Jaeger Query UI Not Loading โ Quick Fix
In this tutorial, you'll learn about Jaeger Query UI Not Loading. We cover key concepts, practical examples, and best practices.
The Problem
The Jaeger Query web UI is not loading or shows errors when trying to search for traces. The page may load but show "No services found" or the search results may be empty. The query service may have lost its connection to the backend storage.
Error example:
Failed to fetch services: cannot read properties of undefined
Error loading trace: service 'frontend' not found
ES connection failed: no Elasticsearch node available
The Fix
Step 1: Check the query-service to storage connection
WRONG โ assuming the UI loads but storage is healthy:
# The query service must have a working connection to the storage backend
RIGHT โ verify the query service health:
# Check the query-service health endpoint
curl http://jaeger-query:16686/health
Output:
{"status": "OK"}
If the health check fails, check the query service logs:
kubectl logs -n jaeger jaeger-query-0 | grep -i error
Step 2: Fix CORS issues for the UI
WRONG โ accessing the UI from a different domain without CORS headers:
# The Jaeger Query UI must be accessed on the same domain or CORS must be enabled
RIGHT โ enable CORS or access the UI correctly:
# Access the UI directly: http://jaeger-query:16686
# Or use a reverse proxy with the correct Host header
# Configure CORS in the query service:
# --query.cors.allowed-origins=http://my-ingress.example.com
Use DodaTech's Jaeger Query Health Checker to validate service discovery, storage connectivity, and CORS configuration for the web UI.
Prevention Tips
- Access the Jaeger UI directly on port 16686, not through a proxy
- If using a reverse proxy, ensure the Host header is correctly forwarded
- Monitor
jaeger_query_requests_totaland error rates - Use Elasticsearch or Cassandra health checks to verify storage connectivity
- Use DodaTech's Jaeger Readiness Probe for automated health monitoring
Common Mistakes with query ui
- Forgetting that lazy evaluation defers computation until the value is forced, causing space leaks with unevaluated thunks
- Using
returnto exit a function early instead of wrapping a pure value in the monad - Mixing let bindings with <- bindings in do notation, producing type errors
These mistakes appear frequently in real-world JAEGER code. DodaTech's contributors have identified these patterns through analysis of open-source projects and production systems.
Practice Exercise
Write a pure function that safely divides two integers using Maybe, then test it with edge cases like division by zero and negative numbers.
This exercise reinforces the concepts covered in this guide. Try implementing it before checking online solutions.
FAQ
Related: DodaTech's Observability Stack Deployment Guide provides ingress and DNS configuration examples for exposing Jaeger, Grafana, and Tempo UIs securely.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro