What Is a Receiver in OpenTelemetry?

What Is a Receiver in OpenTelemetry?

A receiver is the front door of the OpenTelemetry Collector: the component that accepts telemetry from your applications and infrastructure and turns it into one common format. This guide explains, from zero, what receivers are, how they work inside, and how to use them well.

Picture a huge office building where hundreds of people arrive every day carrying letters, parcels, phone messages, and handwritten notes. If every visitor had to wander the corridors looking for the right department, the building would descend into chaos. So the building has a front desk. The desk accepts everything that arrives, checks it, labels it, and sends it to the right place inside. In the world of OpenTelemetry, the component that plays this role is called a receiver, and understanding it is the first step to understanding how modern observability pipelines really work.

1The Big Picture: Why Telemetry Needs a Front Door

Before we talk about receivers, we need to know what is being received and why it is messy.

Modern software is rarely a single program. A simple online shopping experience might involve a mobile app, a web server, a payment service, a database, a cache, and a message queue, all running on many machines at once. When a customer complains that checkout feels slow, someone has to find out which of those parts is responsible. The only way to answer that question is to have every part report on what it is doing. The information that software reports about itself is called telemetry.

The Signals: What Kind of Data Are We Talking About?

Telemetry comes in different flavors, and OpenTelemetry calls each flavor a signal. Each signal answers a different kind of question, and a healthy system usually needs several of them working together.

Signal 1

Traces

The story of one request as it travels across many services, with the time spent at each stop.

Signal 2

Metrics

Numbers measured over time, such as requests per second, memory used, or error counts.

Signal 3

Logs

Time-stamped text records of events, such as “payment failed” or “user signed in”.

Emerging

Profiles

Detailed snapshots of where a program spends its CPU time and memory, a newer signal still maturing.

Simple Analogy

Think of a hospital patient. Metrics are the vital signs on the monitor, such as heart rate and temperature. Logs are the nurse’s written notes about what happened and when. Traces are the full journey chart showing every room and every doctor the patient visited in order. You rarely understand a patient from only one of these.

What Is OpenTelemetry?

OpenTelemetry, often shortened to OTel, is an open-source project hosted by the Cloud Native Computing Foundation. Its goal is to give the whole industry one common, vendor-neutral way to create, collect, and send telemetry. It includes programming-language libraries that applications use to produce data, a shared data format and network protocol called OTLP, naming rules called semantic conventions, and a standalone program called the Collector.

The Collector is the piece that sits between your software and the tools where you eventually look at your data. And inside the Collector, the very first stop for every piece of data is a receiver.

The Problem of Many Languages

Here is the catch: not everything speaks the same language. Some applications use OpenTelemetry libraries and send OTLP. Older systems expose metrics in the Prometheus style. Some write logs to plain files. Others send traces in Jaeger or Zipkin formats. A database might only offer a status page. If your observability tools had to understand every one of these dialects, they would become huge and fragile.

The Collector solves this by using receivers as translators at the entrance. Each receiver knows one dialect or one way of collecting data, and it converts what it gets into a single internal format. Everything after that point can be dialect-free.

i
Good to Know

OpenTelemetry does not store your data and does not draw dashboards. It focuses on producing and moving telemetry. Storage and visualization are done by separate backend tools of your choice.

2What Exactly Is a Receiver?

A receiver is how data gets into the Collector, whether it is pushed in or pulled in.

A receiver is a component of the OpenTelemetry Collector whose job is to get telemetry data into the Collector. That is the whole definition, and every detail in this guide builds on it. A receiver is always the first component in a data pipeline. Nothing can be processed, filtered, or exported until some receiver has first brought the data in.

Why does this component exist at all? Because collecting data is a different problem from processing it or sending it away. By giving collection its own dedicated component, the Collector can support dozens of data sources without changing anything else. You can add a new way of collecting data without touching how data is cleaned or delivered. This separation of duties is one of the main reasons the Collector is so flexible.

1st
Always the first stop in a pipeline
2 ways
Data is pushed in or pulled in
1 format
Everything becomes one internal shape
Simple Analogy

A receiver is like the reception desk of a hotel. Some guests walk up on their own and hand over their luggage (data pushed in). Sometimes a staff member goes out to the car park to collect a delivery (data pulled in). Either way, the desk logs everything in the same standard register, so the rest of the hotel never has to care how each item arrived.

What a Receiver Does and Does Not Do

A receiver listens for incoming data or reaches out to collect it, understands the original format, and converts the data into the Collector’s internal representation. It then hands the converted data to the next component in the pipeline and reports success or failure back to the sender where that makes sense.

A receiver does not decide which data to keep, does not rename or enrich fields in a meaningful way, and does not talk to your final backend. Those jobs belong to processors and exporters. Keeping receivers focused on the single job of getting data in is what keeps them simple and reliable.

“A receiver answers one question only: how does the data get in?”

Receivers Are Plug-ins

The Collector itself is a small core that knows how to run pipelines. Receivers are plug-ins that you choose to include. There are receivers for network protocols, for reading files, for scraping metrics endpoints, for pulling statistics from databases, for consuming messages from queues, and for reading from cloud services. You simply pick the ones that match the systems you run.

Receivers and Resource Details

Telemetry is far more useful when you know exactly where it came from. A measurement of “high memory use” means little unless you also know which machine, which service, and which version produced it. OpenTelemetry carries this information as resource details attached to the data. Receivers that collect data from a specific source, such as a host or a database, usually attach descriptive details about that source as they bring the data in. Receivers that accept data from applications generally preserve whatever details the application already attached.

This matters because later components, such as processors that group or route data, depend on those details. A receiver that preserves them faithfully gives the rest of the pipeline reliable information to work with.

Receivers Compared with Instrumentation

Beginners sometimes confuse the receiver with the code inside the application that creates telemetry. These are two different things on opposite sides of a connection. Instrumentation lives inside your application and creates the data. The receiver lives inside the Collector, a separate program, and collects it. One side produces, the other side catches. Keeping this picture in mind prevents many misunderstandings when you read documentation or search for help.

i
Remember

If you remember only one sentence from this chapter, make it this one: receivers are the doors through which telemetry enters the Collector.

3Where Receivers Live: The Collector Architecture

A receiver is one of five kinds of building blocks inside the Collector.

To see where a receiver fits, we need to look at the whole Collector. The Collector is built from a small number of component types. Each type has a clear role, and together they form pipelines that data flows through from entrance to exit.

Component 1

Receiver

Brings data in, by listening for pushes or by pulling from a source.

Component 2

Processor

Changes data on the way through: batching, filtering, adding labels, limiting memory.

Component 3

Exporter

Sends data out to a backend, another Collector, or a file.

Component 4

Extension

Adds helper abilities that are not part of the data path, such as health checks and authentication.

Component 5

Connector

Acts as an exporter at the end of one pipeline and a receiver at the start of another, joining pipelines together.

flowchart LR
  A["Apps, servers, databases"] --> B["Receiver"]
  B --> C["Processor"]
  C --> D["Exporter"]
  D --> E["Backend tools"]
        
FIG 1 — The simplest Collector pipeline: receiver, processor, exporter

What Is a Pipeline?

A pipeline is a named route that data follows through the Collector. Each pipeline handles one type of signal, so you will typically have one for traces, one for metrics, and one for logs. A pipeline lists which receivers feed it, which processors act on the data in order, and which exporters deliver the result.

This is an important idea: the receiver is only part of the story, and it becomes useful only when it is placed inside a pipeline. The pipeline is the plumbing; the receiver is the tap where water enters.

!
Common Misconception

Defining a receiver in the configuration does not switch it on. A receiver becomes active only when a pipeline references it. Beginners often define a receiver, see no data, and spend hours wondering why. Always check that the receiver is listed in at least one pipeline.

Why Processors and Exporters Never Meet the Outside World Directly

Because receivers do all the translating at the entrance, processors can be written once and work for data from any source. A processor that removes sensitive fields does not care whether the data came from an OTLP application, a Prometheus endpoint, or a log file. Likewise, exporters receive clean, uniform data and can focus entirely on delivering it. This design means the number of components you need grows slowly, even as the number of systems you monitor grows quickly.

4Push or Pull: The Two Ways Receivers Get Data

Some data arrives at the door by itself; other data has to be fetched.

Every receiver falls into one of two broad styles, and knowing which is which makes configuration much easier to understand. In the push style, the source of the data sends it to the receiver. In the pull style, the receiver goes out and asks the source for it.

Simple Analogy

Push is like a newspaper delivered to your doorstep: the publisher decides when it arrives, and you only need to have a mailbox ready. Pull is like walking to the shop to buy the newspaper: you decide when to go, and you can go as often as you like.

flowchart LR
  subgraph Push
    A1["Application with SDK"] -->|"sends data"| R1["OTLP receiver"]
  end
  subgraph Pull
    R2["Prometheus receiver"] -->|"asks on a schedule"| T2["Metrics endpoint"]
  end
        
FIG 2 — Push receivers wait for senders; pull receivers go and collect

Push Receivers

A push receiver opens a network address and waits. Applications, agents, or other Collectors connect and send data whenever they have some. The OTLP receiver is the best-known example, and the Jaeger and Zipkin receivers for traces work the same way. The advantage is timeliness: data arrives the moment it is ready. The responsibility on the receiver’s side is to be always available and to cope with bursts.

Pull Receivers

A pull receiver works on a timetable. Every so often it reads a file, queries a database, scrapes a web endpoint, or asks the operating system for statistics. The Prometheus receiver scrapes metrics endpoints, the host metrics receiver reads machine statistics, and the file log receiver reads new lines from log files. The advantage is that the source system does not need to know anything about OpenTelemetry. It only needs to expose something the receiver can read.

QuestionPush receiverPull receiver
Who starts the conversation?The data sourceThe receiver
What does the receiver do most of the time?Waits and listensSleeps between scheduled collections
Main timing controlSet by the senderSet by the collection interval
Typical sourcesApplications using OpenTelemetry libraries, other CollectorsDatabases, host machines, metrics endpoints, files
Main thing to plan forBursts of incoming trafficChoosing a sensible interval and handling slow sources

How to Decide Which Style You Need

Usually you do not get to choose; the source decides for you. If your application already uses an OpenTelemetry library, it will push data, so you need a push receiver. If you want statistics from a database or an operating system that has no idea what OpenTelemetry is, you need a pull receiver that knows how to ask it politely. Occasionally both are possible, as with systems that expose metrics for scraping and can also push them. In that case, consider who should control timing. Pull gives the Collector control over how often the source is contacted, which protects fragile systems from being flooded. Push gives the source control, which gives fresher data and removes the need for the Collector to know where every source lives.

Another practical point is discovery. A pull receiver must know the addresses of the things it collects from, which is easy for a handful of servers and harder for fast-changing container fleets. Some pull receivers can find their targets automatically by asking the platform what is currently running. A push receiver has the opposite advantage: it has one fixed address, and new senders simply start sending to it with no registration needed.

i
Practical Tip

Many real setups use both styles together in the same Collector. Applications push traces to an OTLP receiver, while pull receivers gather machine and database metrics. They simply feed different pipelines.

5Meet the Receiver Families

There are far more receivers than most people expect, and they fall into a few natural groups.

The Collector ecosystem offers a large catalog of receivers. You do not need to learn them all. It helps to think in families, where each family covers one kind of source. Once you know the families, you can quickly guess which receiver you need for a given system.

Native protocol

OTLP Receiver

Accepts traces, metrics, and logs in the OpenTelemetry native format. The default choice for modern applications.

Legacy tracing

Jaeger and Zipkin Receivers

Accept trace data from applications that were instrumented before OpenTelemetry became common.

Metrics scraping

Prometheus Receiver

Scrapes metrics endpoints on a schedule, so existing Prometheus-style systems can join the pipeline.

Infrastructure

Host Metrics Receiver

Collects CPU, memory, disk, and network statistics from the machine the Collector runs on.

Logs

File Log and Syslog Receivers

Read log files or accept syslog messages, turning plain text into structured log records.

Containers

Kubernetes Receivers

Gather statistics and events about nodes, pods, and cluster objects in Kubernetes environments.

Databases and services

Application Receivers

Dedicated receivers exist for common systems such as PostgreSQL, MySQL, Redis, and Nginx, each knowing how to read that product’s health numbers.

Messaging

Kafka Receiver

Consumes telemetry that other systems have placed on Kafka topics, useful for buffering between stages.

Where Do These Receivers Come From?

The OpenTelemetry project publishes the Collector in several forms. A small core distribution includes a limited, carefully maintained set of components. A larger contrib distribution includes a very wide range of community-contributed receivers. Teams that want a lean, secure build can also assemble a custom Collector containing only the receivers they need. We will return to this choice in a later chapter.

Example: A Typical Small Setup

A team runs a web shop on a few servers. They use the OTLP receiver for traces and metrics from their application, the host metrics receiver for server health, and the file log receiver to gather logs written by an older component that cannot send OTLP. Three receivers, three families, one Collector.

6The OTLP Receiver in Depth

The most important receiver to understand is the one that speaks OpenTelemetry’s own language.

OTLP stands for OpenTelemetry Protocol. It is the standard way for OpenTelemetry components to exchange traces, metrics, and logs. The OTLP receiver is the Collector’s component that accepts data in this format. Because OpenTelemetry libraries for many programming languages already know how to send OTLP, this receiver is usually the main entrance of a Collector.

Two Doors: gRPC and HTTP

The OTLP receiver can accept data over two transport styles. The first is gRPC, a fast, efficient way for programs to call each other over a network. The second is plain HTTP, which is simpler to pass through firewalls, proxies, and load balancers, and which can even be used from web browsers with the right settings. By convention, the gRPC door listens on port 4317 and the HTTP door on port 4318.

4317
Conventional port for OTLP over gRPC
4318
Conventional port for OTLP over HTTP
3 signals
Traces, metrics, and logs on one receiver
Simple Analogy

Imagine a shop with two doors that lead to the same counter. One is a fast lane for regular customers with a loyalty card. The other is a normal entrance anyone can use. Both doors deliver people to the same counter, and the shopkeeper treats them identically once inside.

Why OTLP Is the Preferred Choice

OTLP was designed together with the data model that the Collector uses internally. That means translating OTLP into the internal format loses almost nothing. Other formats sometimes have fields that do not map neatly, or lack information that OpenTelemetry can carry. When you have a choice, sending OTLP from your applications avoids translation surprises.

FeatureOTLP over gRPCOTLP over HTTP
Conventional port43174318
StrengthEfficient, supports streaming, widely used between CollectorsWorks easily through proxies, firewalls, and from browsers
Best fitServer-side applications and Collector-to-Collector linksRestricted networks, browser apps, simple environments
Data encodingCompact binary formatBinary format, with a text-based alternative also supported
!
Common Mistake

Pointing a gRPC client at the HTTP port, or the other way around, is one of the most common reasons for “connection works but nothing arrives”. The two doors speak different transport styles, so the sender and the port must match.

One Receiver, Many Signals

A single OTLP receiver can serve traces, metrics, and logs at once. It does not need a separate instance per signal. Which signals actually flow depends on which pipelines reference the receiver. If the receiver appears in a traces pipeline and a metrics pipeline but not a logs pipeline, then incoming logs will not have anywhere to go.

7Inside a Receiver: How It Works Internally

Let us open the hood and follow what a receiver actually does from start to finish.

Whatever its type, almost every receiver follows the same general life story. It is created, it is started, it spends its life collecting data and passing it along, and eventually it is shut down cleanly. Understanding this life story helps you reason about start-up errors, shutdown behavior, and data loss.

1

Creation by a Factory

Every receiver type has a factory that knows its default settings and how to build an instance. When the Collector reads its configuration, it asks the factory to create the receiver with your chosen settings.

2

Validation of Settings

Before anything starts, the configuration is checked. Invalid values, such as a missing address or a nonsense interval, cause the Collector to refuse to start rather than run in a broken state.

3

Start

The receiver begins its work. A push receiver opens its network listener. A pull receiver starts its timer or opens its file or connection.

4

Collect and Decode

Data arrives or is fetched in the source’s own format. The receiver decodes it, understanding the protocol, text layout, or structure it came in.

5

Convert to the Internal Format

The decoded data is translated into the Collector’s common in-memory representation, the single shape that all later components understand.

6

Hand Off to the Next Consumer

The receiver passes the converted data to the next component in the pipeline. The outcome of that handoff, success or failure, decides what the receiver reports back.

7

Shutdown

When the Collector stops, the receiver closes its listeners and stops its timers so that no new data is accepted while existing work finishes.

flowchart TD
  A["Data source or network"] --> B["Listen or scrape"]
  B --> C["Decode the original format"]
  C --> D["Convert to internal format"]
  D --> E["Pass to next component"]
  E --> F["Reply or acknowledge to sender"]
        
FIG 3 — The working steps of a receiver for one batch of data

Scraper-Style Receivers

Some pull receivers are organized as a collection of small scrapers. The host metrics receiver is the classic example: it has separate scrapers for CPU, memory, disk, and network, and you can turn each one on or off. Think of it as one receiver that contains several little workers, each responsible for one topic. All of them share one collection interval and feed the same pipeline.

Simple Analogy

A scraper-style receiver is like a building inspector with a checklist. On every visit, the inspector checks the electricity, the plumbing, and the fire alarms one after another, then files a single combined report. You can remove items from the checklist if you do not care about them.

8Data Flow and Lifecycle of One Request

Following a single batch of data end to end shows how the receiver cooperates with its neighbors.

Let us trace what happens when an application sends a batch of trace data to an OTLP receiver. This walk-through highlights an idea that surprises many beginners: the receiver does not work alone. What happens downstream can affect what the receiver tells the sender.

sequenceDiagram
  participant App as Application
  participant Rec as Receiver
  participant Proc as Processor
  participant Exp as Exporter
  participant Back as Backend
  App->>Rec: Send a batch of data
  Rec->>Rec: Decode and convert
  Rec->>Proc: Pass the data on
  Proc->>Exp: Pass processed data
  Exp->>Back: Deliver to backend
  Rec-->>App: Report success or failure
        
FIG 4 — One batch of data moving through a Collector pipeline

Success, Failure, and Backpressure

When the next component in the pipeline accepts the data, the receiver can tell the sender that everything went fine. When the next component cannot accept it, for example because memory is running short, it returns an error. The receiver then passes that error back to the sender. A well-behaved sender can respond by waiting and trying again later.

This flow of “slow down” signals backward through the pipeline is called backpressure. It is a safety valve. Without it, a Collector under heavy load would simply keep swallowing data until it ran out of memory and crashed, losing everything at once.

Simple Analogy

A restaurant host seats guests only when the kitchen can cope. If the kitchen is overwhelmed, the host politely says “please wait ten minutes” instead of letting everyone in and having orders pile up. The waiting guests are inconvenienced for a while, but the restaurant keeps working.

Retryable and Permanent Errors

Not all failures are equal. A temporary problem, such as a full buffer, is worth retrying because it will probably clear up. A permanent problem, such as data that is malformed and can never be understood, should not be retried because it will fail every time. Good receivers and senders distinguish between the two. This distinction protects you from endless retry loops that burn resources without ever succeeding.

i
Why This Matters

Because errors travel back to the sender, your applications’ OpenTelemetry libraries usually have their own small buffers and retry rules. The receiver and the sender form a team, and both sides’ settings influence whether data survives a rough patch.

Why Batching Helps Receivers

Senders usually do not transmit every single span or log line separately. Doing so would create enormous network overhead, like mailing each page of a book in its own envelope. Instead, they collect many items into a batch and send them together. A receiver therefore usually decodes a batch holding hundreds or thousands of items in one request. This is far more efficient for both sides, and it is also why receiver limits are usually expressed as message sizes rather than counts of individual items.

Inside the Collector, a batching processor can regroup data again before export, so that the outgoing batches are a size the backend likes. The receiver does not need to worry about that; it simply accepts whatever batch size arrives, within its configured limits.

The Pull Case

A pull receiver has no remote sender to answer, but the same principle applies in a different form. If the pipeline cannot accept scraped data, the receiver may drop that round of data or log a problem, and it will try again on the next interval. Since pulled data is typically a regular series of measurements, one missed round usually leaves a small gap rather than a catastrophe.

9Receivers and Pipelines: Fan-In and Fan-Out

Receivers and pipelines have a flexible many-to-many relationship.

One of the most useful facts about receivers is how freely they can be combined with pipelines. A pipeline may have several receivers feeding into it, and a single receiver may feed several pipelines. This is what lets a small number of components serve a very large variety of needs.

flowchart LR
  R1["OTLP receiver"] --> P1["Traces pipeline"]
  R1 --> P2["Metrics pipeline"]
  R1 --> P3["Logs pipeline"]
  R2["Prometheus receiver"] --> P2
  R3["File log receiver"] --> P3
        
FIG 5 — Several receivers feeding several pipelines

Several Receivers into One Pipeline

Imagine your metrics pipeline needs data from both OpenTelemetry-ready applications and older systems that expose Prometheus-style endpoints. You list both the OTLP receiver and the Prometheus receiver in the same metrics pipeline. Their data merges into one stream before reaching the processors. The processors do not need to know that two different sources exist.

One Receiver into Several Pipelines

The same receiver can also appear in more than one pipeline, as long as the pipelines handle signals that the receiver supports. When a receiver feeds two pipelines of the same signal type, each pipeline gets its own copy of the data. This fan-out is useful when you want to send the same traces to two destinations processed in two different ways, for example one copy with sensitive fields removed for a third-party vendor and one full copy for internal use.

Naming Multiple Instances

Sometimes you want two receivers of the same type with different settings. For example, one OTLP receiver might listen on an internal network address while another listens on a public-facing address with stricter security. The Collector allows this by letting you give each instance its own name after the type. They behave as completely independent receivers even though they share the same type.

Example: Splitting Public and Internal Traffic

A company runs one OTLP receiver for trusted internal services and a second, separately named OTLP receiver for mobile apps on the internet. The public one requires authentication and has tight size limits. Both feed the same traces pipeline, but they have very different security rules.

!
Watch Out

Two receivers cannot listen on the same address and port at the same time. If you create a second instance of a push receiver, give it a different address or the Collector will fail to start.

10The Settings That Shape a Receiver

You do not need to memorize any settings yet; you just need to know what kinds of choices exist.

Every receiver is customized through its configuration. The exact names differ from receiver to receiver, but the kinds of decisions are surprisingly similar across all of them. Learning these categories gives you a mental checklist to run whenever you set up or review a receiver.

Setting 1

Address and Port

For push receivers, where to listen. This decides who on the network can even reach the receiver.

Setting 2

Protocols

Which transports to enable, such as gRPC, HTTP, or both. Turn on only what you actually use.

Setting 3

Encryption

Whether to require secure connections, and which certificates to present or trust.

Setting 4

Authentication

How senders prove who they are, often by linking the receiver to an authentication extension.

Setting 5

Collection Interval

For pull receivers, how often to collect. Shorter means fresher data and more load.

Setting 6

Limits

Maximum message sizes and similar safeguards that stop oversized or abusive requests.

Choosing a Good Listening Address

The address a receiver listens on has a large effect on security. Listening on all network interfaces makes the receiver reachable from anywhere the network allows. Listening only on the local machine makes it reachable only by programs on that same machine. Recent versions of the Collector lean toward the safer local-only behavior by default, because exposing an unauthenticated receiver to a wide network is a common mistake. Whatever your version does, it is wise to choose the address deliberately rather than trusting defaults.

Choosing a Good Collection Interval

For pull receivers, the interval is a trade-off. A very short interval, such as every second, gives you detailed and timely data but increases the work done by both the Collector and the source system. A long interval reduces load but can hide short spikes. Many teams start with an interval of around fifteen to sixty seconds for general metrics and tighten it only for the few things that truly need it.

i
Rule of Thumb

Enable the smallest set of protocols, scrapers, and addresses that does the job. Every extra door you leave open is something you have to secure and monitor.

11Where to Run Receivers: Agent and Gateway Patterns

The same receiver behaves differently depending on where the Collector is placed.

A Collector can be deployed in several ways, and receivers play a slightly different role in each. The two most common patterns are the agent and the gateway. Many production systems use both together.

flowchart LR
  A1["Service A"] --> AG1["Agent Collector"]
  A2["Service B"] --> AG1
  A3["Service C"] --> AG2["Agent Collector"]
  AG1 --> GW["Gateway Collector"]
  AG2 --> GW
  GW --> BE["Backend tools"]
        
FIG 6 — Agents near the workloads, a gateway in the middle

The Agent Pattern

An agent is a Collector that runs close to your applications, for example on the same machine or as a helper next to each group of containers. Its receivers accept data from nearby applications over very short network hops, and its pull receivers can read local resources such as host statistics and log files. Because it sits next to the workload, it can quickly take data off the application’s hands so the application is not slowed down.

The Gateway Pattern

A gateway is a central Collector, or a pool of them, that receives data from many agents or applications. Its receivers are typically OTLP receivers, since agents send OTLP onward. The gateway is a good place for heavy processing, sampling decisions, and a single controlled exit to the outside world. It means individual applications and agents do not each need credentials for the final backend.

AspectAgentGateway
LocationClose to the workloadsCentral, shared by many
Typical receiversOTLP, host metrics, file logs, local scrapersMostly OTLP from agents and applications
Main benefitQuick offloading, access to local resourcesCentral control, security, and heavier processing
Main trade-offMany small instances to manageA shared component that must be sized and kept available
Simple Analogy

Agents are like local post boxes on every street, collecting letters conveniently. The gateway is the big regional sorting office where letters from all the post boxes are checked, sorted, and dispatched to their final destinations.

i
Good to Know

When one Collector forwards data to another, the sending side uses an OTLP exporter and the receiving side uses an OTLP receiver. This pairing is the standard glue that joins Collectors into chains and trees.

12Choosing Your Receivers: Core, Contrib, and Custom Builds

Which receivers are available to you depends on which Collector build you run.

A receiver can only be used if it is compiled into the Collector you are running. This is why the different Collector builds exist, and why choosing among them is a real design decision rather than a technicality.

Build 1

Core Distribution

A small, tightly maintained set of components, including the OTLP receiver. Lean, but limited.

Build 2

Contrib Distribution

A very large collection including most community receivers. Convenient for trying things, but bigger than most teams need.

Build 3

Custom Build

You pick exactly the receivers, processors, and exporters you want and assemble your own Collector with the project’s builder tool.

Why a Custom Build Is Often the Best Production Choice

Every component you include is code that has to be kept updated and trusted. A Collector that contains hundreds of receivers you never use carries a larger surface for security issues and a larger size on disk. A custom build includes only what you need, which makes it smaller, easier to audit, and quicker to start. Many security-conscious organizations treat the contrib build as a place to experiment and a custom build as the thing they actually deploy.

Stability Levels

Not every receiver is equally mature. Each component carries a stability label for each signal it supports, ranging from early development, through alpha and beta, to stable. A stable label means the project promises to avoid sudden breaking changes. A lower label means settings or behavior may change between releases. Before relying on a receiver for something important, check how mature it is for the particular signal you use.

!
Common Mistake

Upgrading the Collector without reading release notes can surprise you when a less mature receiver changes a setting name or a metric name. Test upgrades in a non-production environment first, especially for receivers that are not yet stable.

13Security Around Receivers

A receiver is a door, and every door needs a lock.

Because push receivers accept connections from the network, they are the most exposed part of a Collector. Pull receivers carry their own risks, since they often hold credentials to read from databases and other systems. Security for receivers is therefore not optional, and it is best thought about in layers.

Layer 1: Limit Who Can Reach the Door

The first layer is the network itself. Choose listening addresses carefully, use firewalls or network policies to allow only expected senders, and avoid exposing receivers directly to the internet unless you truly must. Many security problems disappear when a receiver is simply not reachable by strangers.

Layer 2: Encrypt the Conversation

Telemetry often contains sensitive details such as user identifiers, internal service names, and sometimes fragments of data inside error messages. Encrypting the connection with TLS prevents eavesdropping on the network. For stronger protection, mutual TLS makes both sides present certificates, so the receiver also knows that the sender is legitimate.

Layer 3: Verify Who Is Sending

Authentication extensions can be attached to receivers so that each incoming request must carry valid proof of identity, such as a token or credentials. Requests that fail the check are rejected before their data enters the pipeline. This is especially important for receivers that face public networks.

Layer 4: Protect Against Overload and Abuse

Size limits on messages, memory limiting in the pipeline, and sensible concurrency settings keep a single noisy or malicious sender from overwhelming the Collector. For receivers used by browser applications, cross-origin rules control which websites are allowed to send data, so that random pages cannot flood your endpoint.

Simple Analogy

Think of an office building. The fence keeps casual strangers away. The locked door with a keycard checks who each person is. A security guard watches for people carrying suspiciously huge boxes. And a camera records everything. No single layer is perfect, but together they make the building hard to abuse.

!
Do Not Forget

Credentials used by pull receivers, such as database passwords, must be stored and supplied securely, never written openly in shared files. A receiver that can read your production database is a powerful tool and deserves careful handling.

“Every receiver you enable is a door you have promised to secure.”

14Monitoring the Receivers Themselves

The Collector watches your systems, but who watches the Collector?

It is easy to forget that the Collector is itself a piece of software that can fail, slow down, or become overloaded. If a receiver silently drops data, you might look at an empty dashboard and wrongly conclude that everything is quiet. That is why the Collector produces telemetry about its own behavior, including detailed numbers about each receiver.

The Numbers That Matter Most

The Collector’s own metrics include counts of how much data each receiver accepted and how much it refused, broken down by signal type. For example, there are separate counters for accepted and refused spans, metric points, and log records. These names typically begin with a Collector-specific prefix followed by the word receiver. Traditionally these self-metrics are exposed in the Prometheus style on a dedicated port, although the exact setup depends on the Collector version and your configuration.

Accepted
Data the receiver took in and passed on successfully
Refused
Data the receiver turned away, often due to overload
Failed
Data that could not be processed for other reasons
Simple Analogy

Think of the counters at the entrance of a stadium. One counts people let in, another counts people turned away at the gate. If the “turned away” counter suddenly climbs, you know something is wrong long before anyone writes a complaint letter.

A Simple Troubleshooting Routine

1

Check Whether Data Is Arriving at All

If accepted counts are flat at zero, the problem is likely before the receiver: wrong address, wrong port, blocked network, or a sender that is misconfigured.

2

Check Whether Data Is Being Refused

If refused counts are rising, the pipeline is pushing back. Look at memory pressure, slow exporters, or an undersized Collector.

3

Read the Collector’s Own Logs

Start-up failures, certificate problems, and decoding errors are usually described clearly in the Collector’s logs.

4

Confirm the Receiver Is in a Pipeline

A receiver that is defined but not referenced by any pipeline will never do anything, no matter how correct its other settings are.

i
Practical Tip

Set up alerts on rising refused counts rather than waiting for people to notice missing data. Refusals are an early warning that the Collector is under strain.

15Real-World Examples

Seeing receivers in realistic situations makes the concepts concrete.

The best way to appreciate receivers is to see the kinds of problems they solve in everyday engineering work. The scenarios below are common patterns, simplified so they are easy to follow.

Bridging Old and New Systems

A company is slowly moving to OpenTelemetry. Their newer services send OTLP, but older services still expose Prometheus-style metrics and send Jaeger-format traces. By enabling the matching receivers, one Collector accepts all of it, and the backend sees one consistent stream. The migration can happen service by service without a risky big-bang switch.

Collecting Machine Health Without Touching Applications

An operations team wants CPU, memory, and disk numbers for every server, but does not want to change any application. They run an agent Collector on each server with the host metrics receiver turned on. No application code changes, yet the team gets a uniform view of the whole fleet.

Gathering Logs from Files

A legacy application writes logs only to files on disk. The file log receiver watches those files, reads new lines as they appear, and turns each line into a log record that can be enriched and forwarded like any other. The application does not even know it is being observed.

Monitoring a Kubernetes Cluster

A platform team deploys Collectors that use Kubernetes-aware receivers to gather node, pod, and cluster-level statistics, alongside an OTLP receiver for application data. Together they give a complete picture, from the health of the nodes up to the behavior of individual requests.

Buffering Through a Message Queue

A large organization sends telemetry through Kafka to absorb traffic spikes. A Collector with a Kafka receiver consumes from the topic at its own steady pace, protecting the backend from bursts. This is a pull-style receiver used as a shock absorber.

Telemetry from Web Browsers

A company wants performance data from real users’ browsers. Browser code sends data over HTTP to a public-facing, separately named OTLP receiver that has authentication, size limits, and cross-origin rules configured. The internal receiver for server traffic remains untouched and private.

16Advantages and Trade-offs of the Receiver Model

The receiver design is powerful, but like every design it has costs.

Separating data collection into dedicated receivers is a deliberate design choice. It brings large benefits, but it also introduces things you must plan for. A balanced view helps you decide where the model fits best.

Advantages

  • One Collector can accept many data formats at the same time.
  • Processors and exporters are written once and work for every source.
  • Legacy systems can join modern pipelines without code changes.
  • New data sources can be added by enabling a receiver, not rebuilding applications.
  • Applications can stay simple and send data to one nearby address.
  • Security and limits can be enforced in one central place.

Disadvantages / Trade-offs

  • The Collector becomes a component you must deploy, size, and keep healthy.
  • Translating formats can lose detail when the source format is less expressive.
  • Push receivers need capacity planning for bursts of traffic.
  • Large catalogs of receivers tempt teams to enable far more than they need.
  • Receivers at lower stability levels may change between releases.

When the Trade-offs Tip the Balance

For a tiny project with a single application, sending data directly from the application to a backend can be simpler, and a Collector may be unnecessary overhead. As soon as you have several services, several data formats, or a need for central control, the benefits of receivers quickly outweigh the cost of running a Collector. Most growing systems cross that line sooner than they expect.

i
Decision Hint

If you find yourself wanting to change application code only because a backend changed, that is a strong sign you would benefit from putting a Collector, and its receivers, in the middle.

17Best Practices and Common Mistakes

A short list of habits that prevent most beginner problems.

Habits Worth Building

Practice 1

Enable Only What You Use

Turn on the protocols and scrapers you need and nothing more.

Practice 2

Prefer OTLP for New Services

It carries the richest data and avoids translation surprises.

Practice 3

Secure Before You Expose

Add encryption and authentication before any receiver faces a wider network.

Practice 4

Watch Refused Counts

Alert on rising refusals so overload is noticed early.

Practice 5

Add a Memory Limiter

Put a memory-limiting processor early in the pipeline so overload becomes controlled backpressure, not a crash.

Practice 6

Name Instances Clearly

When you have several receivers of one type, use descriptive names such as internal and public.

Mistakes to Avoid

ANTI-PATTERN-01 Avoid
Problem

A receiver is exposed on every network interface with no encryption and no authentication, because it was easy to set up that way during testing.

Why It’s Harmful

Anyone who can reach the address can send fake data, flood the Collector, or learn about your internal systems. Testing shortcuts have a habit of surviving into production.

Correct Approach

Restrict the listening address, require encrypted connections, add authentication for any receiver that faces untrusted networks, and review exposure before every production release.

ANTI-PATTERN-02 Avoid
Problem

The team deploys the huge contrib build everywhere “just in case” they need another receiver later.

Why It’s Harmful

It enlarges the amount of code to patch and trust, and slows audits, with no benefit for the receivers that are never used.

Correct Approach

Build a custom Collector that includes only the receivers, processors, and exporters in actual use, and add components deliberately when real needs appear.

ANTI-PATTERN-03 Avoid
Problem

A pull receiver is configured with a very short interval for every source, because “more data is better”.

Why It’s Harmful

It loads the sources and the Collector with unnecessary work, inflates storage costs, and can make slow sources overlap their own collection rounds.

Correct Approach

Choose intervals based on how quickly the data actually changes and how quickly you need to react, and shorten them only for the few metrics that justify it.

!
Common Mistake

Treating the Collector as invisible infrastructure. Without monitoring its receivers, you may lose data for hours before anyone realizes. Monitor it like any other production service.

18Frequently Asked Questions

Quick answers to the questions beginners ask most often.

Q1Is a receiver the same thing as an exporter?

No. They are opposites. A receiver brings data into the Collector, while an exporter sends data out of it. Data enters through a receiver and leaves through an exporter.

Q2Do I always need a receiver?

Every pipeline needs at least one receiver, because a pipeline with no source has nothing to carry. The only exception is a receiver supplied by a connector, which takes data from the end of another pipeline.

Q3Can one receiver handle traces, metrics, and logs?

Yes, if that receiver supports those signals. The OTLP receiver supports all three. Which ones actually flow depends on which pipelines reference the receiver.

Q4Why is my receiver running but no data appears in my backend?

Common causes include the receiver not being listed in any pipeline, a sender pointed at the wrong port or protocol, a network block, processors that filter everything out, or an exporter that is failing. Check the receiver’s accepted and refused counts first to learn whether data is arriving at all.

Q5What is the difference between a receiver and an SDK?

An SDK is a library inside your application that creates telemetry and sends it out. A receiver is part of the Collector, a separate program, and accepts or collects data. The SDK’s exporter often sends to the Collector’s receiver, so they are two ends of the same connection.

Q6Can I run two receivers of the same type?

Yes, by giving each a distinct name. Remember that push receivers cannot share the same address and port.

Q7Does a receiver store data?

No. A receiver is a pass-through. It accepts data and hands it to the next component. Any buffering happens elsewhere, such as in processors or exporter queues, and long-term storage belongs to your backend.

Q8Which receiver should a beginner learn first?

The OTLP receiver. It is the standard entrance, it is used between Collectors, and understanding it makes every other receiver easier to grasp.

Q9Can a receiver change my data?

A receiver converts data from its original format into the Collector’s internal format, and pull receivers may attach descriptive details about the source. Deliberate changes such as filtering, renaming, or removing fields are the job of processors.

Q10Do I need a Collector at all, or can applications send straight to a backend?

For a small setup, sending directly can work. Once you have several services, mixed data formats, or a wish for central security and processing, a Collector with receivers becomes very valuable.

19Summary and Key Takeaways

A receiver is the front door of the OpenTelemetry Collector. It accepts telemetry that is pushed to it or pulls it from a source, understands the original format, converts the data into one common internal shape, and hands it to the rest of the pipeline. By taking on the messy job of speaking many dialects at the entrance, receivers let processors and exporters stay simple, reusable, and independent of where data came from. Learn the families, secure the doors you open, watch the accepted and refused counts, and the receiver model will serve you well from your first small Collector to a large production fleet.

Key Takeaways

  • A receiver is how data gets in — it is always the first component of a Collector pipeline, and nothing else can happen until a receiver brings data in.
  • Push or pull — push receivers wait for senders, such as OTLP, while pull receivers collect on a schedule, such as Prometheus scraping or host metrics.
  • One internal format — receivers translate many dialects into a single representation so processors and exporters work for every source.
  • Pipelines make it work — a receiver is active only when a pipeline references it, and receivers and pipelines can be combined many-to-many.
  • OTLP is the preferred entrance — it supports traces, metrics, and logs, conventionally on ports 4317 for gRPC and 4318 for HTTP.
  • Security is layered — restrict addresses, encrypt connections, authenticate senders, and apply limits on every receiver you expose.
  • Monitor the Collector itself — accepted and refused counts reveal overload and misconfiguration long before users notice missing data.