Skip to content

Jaeger Agent Not Discovering Collector — Quick Fix

DodaTech Updated 2026-06-24 2 min read

In this tutorial, you'll learn about Jaeger Agent Not Discovering Collector. We cover key concepts, practical examples, and best practices.

The Problem

The Jaeger agent cannot discover or connect to the Jaeger collector. Spans are being dropped or buffered locally. The agent logs show connection failures to the collector endpoint.

Error example:

Agent: failed to connect to collector: dial tcp: lookup jaeger-collector on 8.8.8.8:53: no such host
Agent: couldn't reach any collector — spans will be dropped
Agent: reporter queue full — dropping spans

The Fix

Step 1: Check collector DNS resolution

WRONG — using an incorrect hostname:

# The hostname must resolve to the collector service

RIGHT — verify DNS resolution:

# From the agent host
nslookup jaeger-collector

Output:

Server: 8.8.8.8
Address: 8.8.8.8#53
Name: jaeger-collector.example.com
Address: 192.168.1.100

If DNS fails, check the Kubernetes service name or the JAEGER_AGENT_* environment variables.

Step 2: Configure agent-to-collector connection

WRONG — using an incorrect port:

# The agent sends spans to the collector on specific ports

RIGHT — use the correct configuration:

# Agent sends spans to collector's gRPC port (14250) or Thrift port (14267)
# In a Kubernetes deployment, the agent typically uses:
JAEGER_AGENT_HOST=jaeger-collector
JAEGER_AGENT_PORT=14250

# For Docker deployment
docker run -d \
  -e JAEGER_AGENT_HOST=jaeger-collector \
  -e JAEGER_AGENT_PORT=14250 \
  jaegertracing/jaeger-agent

Use DodaTech's Jaeger Discovery Validator to test agent-to-collector connectivity, DNS resolution, and port accessibility from any deployment context.

Prevention Tips

  • Use Kubernetes DNS service names for collector discovery
  • Deploy the Jaeger agent as a sidecar for per-pod span processing
  • Configure multiple collector endpoints for high availability
  • Monitor jaeger_agent_reporter_batch_size and jaeger_agent_reporter_queue_length
  • Use DodaTech's Jaeger Deployment Suite for automated agent configuration

Common Mistakes with agent discovery

  1. Overlapping type class instances that cause GHC to reject the program with ambiguous dispatch errors
  2. Non-exhaustive pattern matches that compile with warnings then crash at runtime
  3. Misunderstanding that String is [Char] with poor performance for large text operations

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

### What is the difference between the Jaeger agent and the Jaeger collector?

The Jaeger agent is a sidecar or host-level daemon that receives spans from applications and forwards them to the collector. The collector processes, validates, and stores spans. In modern deployments, the agent can be replaced by the OpenTelemetry Collector.

How does the Jaeger agent discover collectors?

The agent uses a static host:port configuration or DNS-based service discovery. In Kubernetes, the agent typically connects to the jaeger-collector service. The JAEGER_AGENT_HOST and JAEGER_AGENT_PORT environment variables control this.

Can I run the Jaeger agent without a collector?

The agent requires a collector to forward spans. Without a collector, spans accumulate in the agent's buffer and are eventually dropped when the buffer is full. For development, run the all-in-one Jaeger container that includes agent, collector, and query service.

Related: DodaTech's Distributed Tracing Guide covers Jaeger, Tempo, and OpenTelemetry deployment patterns for microservice observability.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro