Introduction When Jaeger does not record traces, distributed tracing visibility is lost. This makes it impossible to debug cross-service latency issues, error propagation, and dependency problems.

Symptoms - Jaeger UI shows "No traces found" for recent time range - Application logs show "failed to flush spans" - Jaeger collector logs show connection errors - Traces recorded for some services but not others - Trace sampling rate shows 0%

Common Causes - Sampling rate set too low (0% or 0.001) - Jaeger collector unreachable from application - Instrumentation SDK misconfigured - Trace context not propagating between services - Storage backend full or unavailable

Step-by-Step Fix 1. **Check Jaeger collector status': ```bash kubectl get pods -n jaeger -l app=jaeger-collector kubectl logs -n jaeger -l app=jaeger-collector --tail=50 ```

  1. 1.**Check sampling configuration':
  2. 2.```yaml
  3. 3.# jaeger-agent command line
  4. 4.--sampling.strategies-file=/etc/jaeger/sampling.json
  5. 5.# sampling.json:
  6. 6.{
  7. 7."default_strategy": {"type": "probabilistic", "param": 0.1},
  8. 8."service_strategies": [
  9. 9.{"service": "my-app", "type": "probabilistic", "param": 1.0}
  10. 10.]
  11. 11.}
  12. 12.`
  13. 13.**Verify instrumentation is sending traces':
  14. 14.```bash
  15. 15.# Check if spans are being exported
  16. 16.export OTEL_TRACES_EXPORTER=console
  17. 17.# Run application and check console output
  18. 18.`

Prevention - Set probabilistic sampling to at least 0.1 (10%) for production - Monitor trace ingestion rate in Jaeger - Test tracing after application deployments - Use adaptive sampling to adjust rates dynamically - Implement trace-based alerts for error rate and latency