What Are Vendor Exporters in OpenTelemetry?
A plain-English guide to the pieces of OpenTelemetry that carry your traces, metrics, and logs to a specific company’s product — what they are, why they exist, when you still need them, and how to use them safely.
Imagine you have written a letter, and now you need to post it. A good postal service gives you a choice. You can use the standard international envelope that every post office in the world understands, or you can use a special envelope made by one particular courier company, which only that courier accepts but which comes with extra features such as its own tracking page and special insurance.
OpenTelemetry has the same choice. Your software produces telemetry, which is the stream of traces, metrics, and logs that describes how it behaves. That telemetry must eventually be sent to a product that stores it and shows it on dashboards. The part of OpenTelemetry that does the sending is called an exporter. Some exporters speak the standard language. Others are built to speak the private language of one specific company, and these are called vendor exporters.
This guide explains vendor exporters from the ground up. You will learn what they are, why they were created, how they compare with the standard exporter, how they work inside, and how to use them safely and sensibly. Every new word is explained the first time it appears, so you do not need any earlier knowledge.
1What Are Vendor Exporters?
The short answer first, then the details that make it useful.
OpenTelemetry, often shortened to OTel, is a free, open source framework hosted by the Cloud Native Computing Foundation. It gives developers one standard way to create and collect telemetry. But creating telemetry is only half the story. Someone has to carry it out of your program or out of the middle layer and deliver it to a place where people can use it. That carrier is the exporter.
A vendor is simply a company that sells or hosts a product, such as a monitoring service, a log search tool, or a cloud platform. A vendor exporter is an exporter built to deliver telemetry to one particular vendor’s product, using that vendor’s own data format, address, and rules. It is the special envelope that only one courier accepts.
The other kind of exporter is the OTLP exporter. OTLP stands for OpenTelemetry Protocol, the project’s own standard language. An OTLP exporter works with anyone who understands that language, which today includes a large and growing number of vendors and open source tools. It is the standard international envelope.
Think of a travel plug adapter. Wall sockets differ from country to country, and your phone charger only has one shape. A universal adapter lets one charger work almost everywhere. A vendor exporter is like a custom adapter built for exactly one country’s socket. It fits that socket perfectly, and it may even add a surge protector, but it is useless anywhere else. The OTLP exporter is the universal adapter, and more and more sockets are being redesigned to fit it.
What a vendor exporter usually does
- Translates. It converts OpenTelemetry’s internal data into the exact format the vendor expects.
- Addresses. It knows the vendor’s web addresses, called endpoints, including regional variations.
- Authenticates. It attaches the secret key or token that proves you are a paying customer.
- Adapts. It handles quirks, such as how the vendor wants metrics measured or how names must be spelled.
- Delivers reliably. It retries on failure and queues data during short outages.
What a vendor exporter is not
A vendor exporter is not a backend. It does not store or display anything; it only delivers. It is also not required, because most modern vendors accept the standard OTLP format, so the plain OTLP exporter often works just as well. And it is not a separate product from OpenTelemetry. Most vendor exporters are components that live inside the OpenTelemetry project’s own code repositories, usually built and maintained by people from the vendor itself.
Why you should care about exporters
Exporters sit at the very end of the telemetry journey, which makes them easy to ignore until something goes wrong. Yet every dashboard, alert, and investigation you will ever run depends on data that an exporter delivered. If the exporter is misconfigured, slow, or sending the wrong thing, even the best instrumentation in the world will leave you blind.
Exporters also decide how much freedom you keep. A well-chosen exporter lets you change tools without drama, while a carelessly chosen one can quietly turn a flexible system into a rigid one. Understanding them early is one of the cheapest ways to protect your future options.
An exporter sends telemetry out. A vendor exporter sends it to one specific company’s product in that company’s own language. The OTLP exporter sends it in the shared standard language that many products understand.
2Why Vendor Exporters Exist: A Short History
Every good component begins as a response to a painful problem. Vendor exporters are no exception.
When tracing and monitoring tools first appeared, every vendor invented its own way of receiving data. One product wanted data in one shape, a second wanted it in another, and a third required a completely different set of field names. A company that wanted to switch from one product to another often had to rewrite the instrumentation code inside every application, which could take months.
The earlier open source projects, OpenTracing and OpenCensus, tried to soften this problem. OpenCensus in particular shipped many exporters, each one a small translator for a specific destination. The idea was good: write your instrumentation once, and choose the destination by swapping an exporter. Still, every vendor had its own exporter with its own behavior, and every language had its own set. The number of combinations grew quickly.
In 2019, OpenTracing and OpenCensus merged into OpenTelemetry. The new project kept the idea of exporters and added something even more powerful: a single standard protocol, OTLP, that vendors could accept directly. Over the following years, vendor after vendor added native OTLP support to their products. When a vendor accepts OTLP directly, the plain OTLP exporter is enough, and a custom vendor exporter becomes optional.
Private formats everywhere
Each vendor accepts data only in its own format. Switching vendors means rewriting application code.
Exporters as translators
OpenCensus and similar projects offer exporters, so applications are instrumented once and destinations are chosen by configuration.
2019 — OpenTelemetry is formed
The merger creates one standard for instrumentation, a Collector, and a native protocol called OTLP.
Vendors contribute exporters
Companies add exporters for their own products to the project’s shared repositories, so customers can use them with the Collector.
Vendors adopt OTLP natively
Many vendors begin accepting OTLP directly, and the project itself recommends OTLP wherever it is available.
Old exporters are retired
Where a destination now understands OTLP, older special exporters are deprecated and removed. The Jaeger exporters are a well-known example.
Before USB, every device had its own charging cable, and drawers were full of tangled wires. A single shared plug made life simpler for everyone. OTLP aims to be that shared plug for telemetry. Vendor exporters are the old cables still in the drawer: some are still needed for older devices, and some remain handy for special features, but fewer people reach for them every year.
It is worth understanding how vendor exporters come into being. In most cases, a vendor writes the exporter for its own product and offers it to the open source project. Volunteers and project maintainers review it, and once accepted, it is named in a file that lists its code owners, the people responsible for keeping it healthy. This arrangement is efficient, because the people who know the vendor’s system best write the translation. It also means the exporter’s quality depends on how much attention the vendor and the community give it over time.
Jaeger, the popular open source tracing tool, began accepting OTLP directly. Once that happened, the special Jaeger-format exporters in OpenTelemetry were no longer necessary and were gradually retired. This is the usual life story of a vendor exporter: needed at first, then fading as the destination learns the standard language.
3Core Concepts You Need First
A handful of words explain nearly everything in this area. Let us meet them one at a time.
Signal
One kind of telemetry. Traces follow a request across services, metrics are numbers measured over time, and logs are written records of events. An exporter may support one signal or all three.
SDK
The OpenTelemetry code that lives inside your application and creates telemetry. It includes a place to attach exporters.
Collector
A separate program that receives telemetry, changes it if needed, and forwards it. It has receivers, processors, and exporters, and it is where most vendor exporters live.
OTLP
The OpenTelemetry Protocol, the native shared language. It travels over gRPC, a fast connection style, or over HTTP, the same basic method that web pages use.
Endpoint
The web address that an exporter sends data to. Vendors often have different endpoints for different regions or different signals.
API key or token
A secret string that proves who you are to the vendor. It is usually sent in a header attached to each request.
Contrib
The large community collection of Collector components, kept separately from the small core. Most vendor exporters are in this collection.
Stability level
A label showing how mature a component is, such as development, alpha, beta, or stable. It tells you how much change and risk to expect.
SDK exporter versus Collector exporter
Exporters exist in two places. An SDK exporter lives inside your application and sends data straight from your program. A Collector exporter lives inside the Collector and sends data onward from the middle layer. In practice, applications almost always use the standard OTLP exporter in the SDK to talk to a Collector, while the Collector, where they exist, uses vendor exporters or OTLP exporters to talk to the final destinations. We will see why this split is so helpful.
A word about distributions
Some vendors publish their own ready-to-use package of OpenTelemetry, called a distribution. It is the standard project plus the vendor’s preferred settings and extra components, so customers can get started quickly. Examples include distributions offered by large cloud providers and observability companies. A distribution is convenient, but it is worth remembering that it can bring vendor-specific habits along with it, so read what is inside before you rely on it.
Resource details travel with the data
Telemetry does not travel alone. It carries a description of who produced it, called the resource, with details such as the service name, the version, and the environment. Vendor exporters use these details to decide where to file the data in the vendor’s own screens. If the service name is missing or wrong, the data may appear under an unhelpful label such as “unknown service,” and nobody will find it. Setting the resource details carefully in your applications is therefore one of the quietest, most valuable habits in the whole pipeline.
Picture a factory with a shipping department. The SDK is the production line, the Collector is the shipping department, and exporters are the delivery trucks. OTLP trucks are the standard trucks that fit every loading dock. Vendor trucks are specially built for one customer’s dock.
4The Family of Exporters
Vendor exporters are one branch of a larger family. Seeing the whole family makes each branch easier to understand.
OpenTelemetry offers many exporters, and they fall into four rough groups. The standard group contains the OTLP exporters, which are neutral. The open source backend group contains exporters for community tools, such as Prometheus, Zipkin, and Kafka. The vendor group contains exporters aimed at commercial products and cloud platforms. The helper group contains exporters that exist for testing and plumbing rather than for a final destination.
flowchart TD
EXP["Exporters"]
EXP --> STD["Standard and neutral"]
EXP --> OSS["Open source backend exporters"]
EXP --> VEN["Vendor exporters"]
EXP --> HLP["Helper exporters"]
STD --> S1["OTLP over gRPC"]
STD --> S2["OTLP over HTTP"]
OSS --> O1["Prometheus"]
OSS --> O2["Zipkin"]
OSS --> O3["Kafka"]
VEN --> V1["Datadog"]
VEN --> V2["Splunk"]
VEN --> V3["AWS X-Ray"]
VEN --> V4["Google Cloud"]
VEN --> V5["Azure Monitor"]
HLP --> H1["Debug or console"]
HLP --> H2["File"]
HLP --> H3["Load balancing"]
Read the diagram from the top. Every exporter does the same basic job, which is to send telemetry out, but each branch has a different purpose. The standard branch is the neutral path that works with anyone who speaks OTLP. The open source branch serves community tools. The vendor branch serves specific companies. The helper branch is about testing, saving data to a file, or spreading work among several Collectors. The names in the vendor branch are examples only, because the exact list changes over time.
| Group | Purpose | Example | Simple comparison |
|---|---|---|---|
| Standard | Send data in the shared language | OTLP over gRPC or HTTP | The universal adapter |
| Open source backend | Serve a specific community tool | Prometheus, Zipkin, Kafka | An adapter for a public socket |
| Vendor | Serve one company’s product | Datadog, Splunk, AWS, Google Cloud, Azure | An adapter built for one private socket |
| Helper | Test, store, or route data | Debug, file, load balancing | A test lamp and a sorting table |
New exporters appear, and old ones are deprecated, every few months. Do not trust any article, including this one, as the final word on which vendor exporters exist. The project publishes an online registry of components, and each component page shows its current stability level and who maintains it. Check there before you build anything on it.
5Where Exporters Sit in the Architecture
Where you attach an exporter matters just as much as which exporter you choose.
The usual recommended design is simple. Applications use the SDK and send data in OTLP to a Collector. The Collector receives it, applies shared rules in its processors, and then uses exporters, either OTLP or vendor, to deliver it to one or more destinations. Because the choice of destination is made in the Collector, applications never need to know which vendor is in use.
flowchart LR
subgraph APP["Application"]
CODE["Your code with OpenTelemetry SDK"]
SX["SDK exporter: OTLP"]
end
subgraph COL["Collector"]
RC["OTLP receiver"]
PR["Processors"]
VE["Vendor exporters and OTLP exporters"]
end
subgraph VENDORS["Destinations"]
V1["Vendor A"]
V2["Vendor B"]
V3["Open source backend"]
end
CODE --> SX
SX -->|OTLP| RC
RC --> PR
PR --> VE
VE --> V1
VE --> V2
VE --> V3
Follow the arrows. The application code creates telemetry, and its SDK exporter sends it as OTLP. The Collector’s receiver accepts it, the processors clean and label it, and the exporters deliver it to Vendor A, Vendor B, and an open source backend. If the company later drops Vendor A and adds a new vendor, only the Collector changes. No application is touched.
Think of an office with a central mailroom. Employees put all their mail in one standard tray. The mailroom decides which courier carries each parcel, relabels the parcels in whatever style each courier requires, and keeps all courier accounts and passwords in a safe. Employees never learn which courier is used, and the company can change couriers over a weekend without anyone noticing.
Why not put vendor exporters inside the application?
You can, and many tutorials do, because it is the shortest path to a working demo. But it ties the application to the vendor. The vendor’s secret key must be present in every program. Changing vendors means changing and redeploying every program. A bug or slowdown in the vendor exporter runs inside your business code. And rules for sampling, redaction, and labeling must be repeated in every application. Putting vendor exporters in the Collector avoids all of these problems at once.
When SDK exporters are the right choice
Direct export from the SDK is perfectly sensible in a few situations: a small project with one service and one vendor, a quick experiment, a serverless function where running a separate Collector is awkward, or a vendor that officially recommends its own distribution. In those cases, simplicity wins, and you can move to the Collector design when the system grows.
One Collector or a chain of them
The Collector in this design can be a single shared service, or it can be a chain with a small agent on every machine feeding a central gateway. In both layouts, exporters at the final step are the ones that touch the outside world. It usually makes sense to put vendor exporters only on the final, central layer. This keeps the number of places that hold secret keys small, and it means the outbound connections to the vendor come from a few well-known machines, which makes network rules and monitoring far simpler.
A good rule of thumb is to treat the application as vendor-neutral and the Collector as vendor-aware. Applications only ever say “send OTLP to this address.” The Collector knows which companies are on the other side.
6How a Vendor Exporter Works Inside
Follow one bundle of telemetry on its final journey, from the Collector to the vendor.
The processors finish their work
Data has been cleaned, labeled, and sampled. The last processor, usually the batch processor, hands a bundle to the exporter.
The exporter reads the internal format
Inside the Collector, every signal is held in one shared internal shape, so exporters all start from the same place.
It translates the data
A vendor exporter converts the bundle into the vendor’s format, mapping OpenTelemetry names and fields to the vendor’s own names and fields.
It attaches identity
The exporter adds the secret key or token, and chooses the right regional endpoint.
It queues and sends
The request goes into a sending queue and then travels over an encrypted connection to the vendor.
It handles the answer
If the vendor accepts, the bundle is done. If the vendor is busy or unreachable, the exporter waits and tries again. If the vendor rejects the data as invalid, the exporter reports it and does not retry forever.
sequenceDiagram
participant P as Processors
participant X as Vendor exporter
participant Q as Sending queue
participant V as Vendor endpoint
P->>X: 1. Hand over batch in OpenTelemetry format
X->>X: 2. Translate to vendor format and add key
X->>Q: 3. Place request in queue
Q->>V: 4. Send over encrypted connection
V--xQ: 5. Temporary error or rate limit
Note over Q: 6. Wait and retry with growing delay
Q->>V: 7. Retry the request
V-->>Q: 8. Accepted
Note over X: 9. Count sent and failed items
In steps one to three, the processors hand over a bundle, the exporter translates it and adds the key, and the request enters the queue. In step four the queue sends it to the vendor. Step five shows a common real-world event: the vendor says “slow down” or is briefly unavailable. Rather than discarding the data, the queue waits and retries with growing pauses, as steps six and seven show. When the vendor accepts in step eight, the work is done, and in step nine the exporter counts what was sent and what failed so that you can watch it on a dashboard.
Notice also that an exporter works on copies of the data in memory. It does not change your applications and it does not change the original telemetry. If you attach two exporters to one pipeline, each performs its own translation from the same starting point, and each can fail or succeed on its own. That independence is what lets one vendor be slow or unavailable while the other keeps receiving data happily.
Translation is the heart of it
The translating step is the reason vendor exporters exist at all. OpenTelemetry uses agreed names for common details, called semantic conventions. For example, there is one agreed name for the service that produced the data. A vendor may use a different name for the same idea, or may treat a few special details in a unique way. The vendor exporter maps one to the other. Good exporters do this faithfully, but translation can lose information or rename things in surprising ways, which is why it is worth checking your data in the vendor’s screens after the first test.
Batches and size limits
Vendors set limits on how large a single request may be, how many items it may hold, and how fast requests may arrive. A batch processor ahead of the exporter groups data into efficient bundles, and its size settings should respect the vendor’s limits. If bundles are too large, the vendor may refuse them whole. If they are too small, you waste effort and may hit rate limits. When the vendor documents its limits, treat them as the starting point for your batch settings.
A temporary problem, such as a busy server, deserves a retry. A permanent problem, such as a wrong key or a badly formed request, will never succeed no matter how often you retry. Good exporters tell the difference. If you see an exporter retrying endlessly, check whether the key or endpoint is wrong, because patience will not fix a mistake.
7OTLP or a Vendor Exporter? Choosing Wisely
This is the question every team eventually asks, and the answer is usually simpler than it first appears.
The project’s general advice is easy to remember: use OTLP whenever the destination supports it. OTLP is the native language of OpenTelemetry, so nothing needs to be translated, and nothing can be lost in translation. It also keeps you free to change destinations, because every OTLP-speaking product looks the same from the outside.
Vendor exporters earn their place in the remaining cases. Some destinations simply do not accept OTLP yet. Some cloud platforms tie access to their own identity system, so an exporter that understands that system is much easier to use. And some products offer special features that only their own format can carry. The flowchart below turns this thinking into a short decision path.
flowchart TD
A["Need to send data to a vendor"] --> B{"Does the vendor accept OTLP directly?"}
B -->|Yes| C["Use the standard OTLP exporter with the vendor endpoint and key"]
B -->|No| D{"Is there a vendor exporter for the Collector?"}
D -->|Yes| E["Use it and check its stability level"]
D -->|No| F["Use the vendor distribution or choose another path"]
E --> G{"Is the exporter stable enough for your needs?"}
G -->|Yes| H["Adopt it and monitor it"]
G -->|No| I["Test carefully or ask the vendor for support"]
Begin at the top. If the vendor accepts OTLP directly, you are done: use the standard exporter and point it at the vendor’s endpoint with your key. If not, look for a vendor exporter in the Collector collection. If one exists, check how mature it is. A component labeled stable is much safer than one labeled development or alpha, which may change or disappear without much warning. If no exporter exists at all, consider the vendor’s own distribution or reconsider the choice of destination.
| Question | OTLP exporter | Vendor exporter |
|---|---|---|
| Which language does it speak? | The shared OpenTelemetry standard | The vendor’s own format |
| Is translation needed? | No | Yes, and it can change names or lose detail |
| How easy is it to switch vendors? | Very easy: change the endpoint and key | Harder: swap the exporter and re-check the data |
| Does it work with every destination? | Only those that accept OTLP | Only the one vendor it was built for |
| How much does it change over time? | Stable and slow-moving | Can change whenever the vendor changes |
| Can it use vendor-specific features? | Not directly | Often yes |
| Can it use the vendor’s identity system? | Through headers or extensions | Often built in |
Booking a flight is easier when every airline accepts the same standard ticket. You can switch airlines without learning a new process. A few small airlines still insist on their own paper forms. You may well fly with them because the route is excellent, but you will always plan extra time for the paperwork. The standard ticket is OTLP, and the paper form is the vendor exporter.
Cloud platforms deserve a special mention. Their monitoring services are closely tied to their own identity and permission systems. A vendor exporter built for such a platform can ask the platform for short-lived proof of identity, which avoids storing a secret key at all. For organizations that run entirely on one cloud, this convenience and safety is often the deciding reason to use the platform’s exporter, even though plain OTLP might also be possible.
Many people worry that sending data to a vendor means being trapped. If you use the standard OTLP exporter pointed at a vendor’s OTLP address, you are still free. Only the endpoint and the key belong to that vendor. Your instrumentation and your Collector remain neutral, and moving elsewhere is a small change to those two settings.
8What You Configure on an Exporter
Every exporter, whether OTLP or vendor, is controlled by a small set of settings. Learn them once and you can read any exporter.
Most exporters have the same basic dials. Some are required, such as where to send and how to prove who you are. Others tune reliability and performance. The table below explains each dial in plain language.
| Setting | What it controls | Simple comparison |
|---|---|---|
| Endpoint | The address data is sent to, often specific to a region | The street address on the parcel |
| Authentication | How you prove who you are, usually a key or token in a header, or a cloud identity | Your account number and signature |
| Encryption settings | Whether the connection is encrypted and which certificates are trusted | A sealed, tamper-evident envelope |
| Headers | Extra labels attached to every request, such as an API key or a team name | Stickers on the box |
| Compression | Whether data is squeezed before sending to save bandwidth | Vacuum-packing clothes |
| Timeout | How long to wait for an answer before giving up on one attempt | How long you hold the phone before hanging up |
| Retry | Whether and how to try again after a temporary failure | Calling back later |
| Sending queue | How many waiting bundles to hold during slowdowns | A waiting room |
| Signals | Which of traces, metrics, and logs this exporter handles | Which kinds of parcel the courier takes |
It helps to remember that settings come in layers. Some belong to the exporter itself, such as the endpoint and the key. Others belong to the surrounding pipeline, such as the batch size and the processors that run before the exporter. A problem that looks like an exporter failure is sometimes caused by a neighbor in the pipeline, for example a processor that removes a label the vendor requires. When something goes wrong, check the whole path, not only the last step.
Which settings matter most on day one
For a first working setup you need three things: the right endpoint, a valid credential, and encryption turned on. Everything else can start at its default. Once data is flowing, spend time on the reliability dials, especially the queue and the retries, because these decide what happens on the first bad day.
Keep secrets out of the settings file
The configuration file is usually stored in a shared place and read by many people. A secret key typed directly into it can leak through version control, screenshots, or support tickets. A better habit is to keep the key in a proper secret store and let the Collector read it from the environment when it starts. The file then contains only a reference, and the secret lives somewhere safer.
One exporter, several pipelines
A single exporter can be used by several pipelines, and a single pipeline can send to several exporters. This flexibility is what makes tasks such as copying data to a second vendor easy. It also means that a careless change to a shared exporter affects every pipeline that uses it, so treat shared settings with respect.
Compression and bandwidth
Telemetry can be bulky, and sending it across the internet costs both time and money. Most exporters can compress data before sending, trading a little processing effort for a large saving in network traffic. This is usually a good bargain, particularly when the Collector sits in one cloud region and the vendor in another, where data transfer is charged. Check that the vendor accepts the compression style you choose, and measure the effect on both bandwidth and processor use after turning it on.
Many vendors run separate regions, and a key created in one region does not work in another. If an exporter reports that authentication failed even though the key looks right, check that the endpoint belongs to the same region as the account. Wrong region is one of the most common causes of a first-day failure.
9Special Care for Metrics
Traces and logs usually travel smoothly. Metrics have a few traps that every vendor exporter user should know.
Metrics are numbers measured over time, such as the count of requests handled. Different destinations expect these numbers to be reported in different styles, and a vendor exporter often has to adapt. The most important difference is called temporality.
Think of a car with two meters on its dashboard. The odometer shows the total distance the car has ever traveled, and it only goes up. The trip meter shows the distance since you last reset it. Cumulative metrics are like the odometer: each report is the running total since the start. Delta metrics are like the trip meter: each report is only the change since the previous report. Both describe the same journey, but a destination that expects one will be confused by the other.
Some backends, such as Prometheus, expect cumulative totals. Others prefer or require deltas. The Collector offers processors that convert between the two, and some vendor exporters apply the right style automatically. If a counter on your dashboard suddenly looks flat, impossible, or wildly spiky, a mismatch in temporality is the first thing to suspect.
| Topic | What can go wrong | What to do |
|---|---|---|
| Temporality | A backend expecting deltas receives totals, or the reverse, and charts look wrong | Check what the vendor expects and convert in the Collector if needed |
| Histograms | Some vendors support newer, finer histogram styles and some only the older bucket style | Check support and choose the style the vendor handles best |
| Names and units | A backend rewrites dots to underscores, or adds suffixes for units | Learn the vendor’s rules and test with one metric first |
| High cardinality | Too many different label values create millions of separate series, and bills rise sharply | Remove or group unbounded labels before export |
| Resets and start times | A restart makes a total drop to zero, which can look like a negative change | Use exporters and backends that understand start timestamps |
Units deserve a short word as well. A duration may be measured in seconds by one system and milliseconds by another, and a size may be in bytes or kilobytes. Exporters usually carry the unit along, but not every destination displays it the way you expect. A chart that shows latency of two thousand when you expected two is almost always a unit mismatch, not a sudden disaster, so check the unit before sounding the alarm.
Cardinality and the bill
Cardinality means the number of different combinations of label values. If a metric has a label for the customer ID, and you have a million customers, that single metric becomes a million separate lines. Many vendors bill by the number of such lines, so one careless label can multiply costs overnight. A gateway Collector with a processor that drops or merges unbounded labels is one of the best defenses.
Before turning on metrics for everything, pick one counter and one histogram. Follow them from the code, through the Collector, to the vendor’s screen. If the values match what you expect, the translation is working. If not, you have found the problem while it is still small.
10Security and Privacy for Exporters
An exporter is the exit door of your telemetry. Whatever passes through it leaves your control.
Exporters carry two kinds of valuable things: the telemetry itself, which may contain sensitive details about your system and your customers, and the credentials that let you send it. Both deserve care. A good rule is to assume that anything an exporter sends will be stored by a third party for a long time, and to decide, before turning it on, whether you are comfortable with that.
| Risk | Example | Remedy |
|---|---|---|
| Leaked credentials | An API key pasted into a configuration file or shared screenshot | Keep keys in a secret store, rotate them regularly, and never commit them to version control |
| Data in transit | Telemetry sent over an unencrypted connection | Always use encrypted connections to the vendor |
| Sensitive data leaving the network | Email addresses or card numbers inside span attributes or logs | Redact or mask in the Collector before the exporter runs |
| Excess permissions | One all-powerful key shared by every team | Use separate, limited keys for each environment or team |
| Data residency | Customer data stored in a region the law does not allow | Choose the vendor’s regional endpoint that matches your obligations |
| Untrusted components | A rarely used contrib exporter with few maintainers | Check who maintains it, pin versions, and build a custom Collector with only what you need |
| Open exit paths | Any program can send data anywhere on the internet | Allow outbound traffic only to the vendor addresses you use |
Think of a company’s outgoing mail. Before a letter leaves the building, someone should check that it does not contain confidential papers. The courier’s account number should be kept in a safe, not taped to the wall. And only approved couriers should be allowed through the door. An exporter’s security follows the same three habits: check the contents, protect the keys, and limit the exits.
Using cloud identity instead of static keys
Some vendor exporters, especially those for large cloud platforms, can use the cloud’s own identity system. The Collector is given a role, and the platform proves who it is automatically, without any long-lived secret in a file. This is usually safer than a static key, because there is nothing to leak or forget to rotate. When a vendor offers this option, it is often the best reason to prefer the vendor exporter over plain OTLP.
Review what you export
Make it a habit to look at a sample of exported data from time to time, as a stranger would see it. Ask whether a person could be identified, whether a secret is visible, and whether anything leaves that the company never agreed to share. A short review each quarter often finds forgotten attributes, such as a full web address with an access token in it, long before an auditor or an attacker does.
Once data reaches a vendor, removing it can be slow, expensive, or impossible. Put masking rules in processors that run before the exporter, ideally at a central gateway, so that even a careless application cannot send a secret out of your network by accident.
11Monitoring the Exporters
If the delivery truck breaks down, the warehouse keeps working and nobody notices until the shelves are empty. Watch the trucks.
An exporter that quietly fails produces the most dangerous kind of problem: dashboards that look calm because they are empty. To avoid this, the Collector publishes internal telemetry about its own work, including metrics for how many items each exporter sent, how many failed, and how full its queue is. Collect these numbers, chart them, and set alerts.
| What to watch | What it tells you | Typical action |
|---|---|---|
| Items sent successfully | Whether data is reaching the vendor at the expected rate | A sudden drop means something broke upstream or at the exporter |
| Items that failed to send | Whether the vendor or the network is rejecting data | Check keys, endpoints, vendor status, and limits |
| Queue size compared with capacity | How close you are to dropping data | Warn early, long before the queue is full |
| Items refused when enqueuing | Whether data is being lost because the queue is full | Increase capacity or fix the slowdown |
| Delay between creation and arrival | Whether data is fresh enough to be useful | Check queues, batching, and network paths |
| Vendor-side usage and rate-limit messages | Whether you are approaching a quota or a bill limit | Reduce volume with sampling and filtering |
The debug exporter: your testing friend
The Collector has a helper called the debug exporter, earlier named the logging exporter. It prints a summary of the telemetry passing through into the Collector’s own log. Adding it temporarily next to a vendor exporter lets you confirm that the data looks right before it leaves, which makes it much easier to tell whether a problem is in your pipeline or on the vendor’s side. Remove it, or lower its detail, in production, because it can create a lot of log output.
Check the other end too
Counting what you sent is only half the story. Once in a while, open the vendor’s own screens and confirm that the data arrived and looks as expected: service names, labels, units, and timestamps. A comparison between the Collector’s sent counts and the vendor’s received counts reveals problems that no single side can show.
A useful dashboard for exporters shows four lines side by side: items received by the Collector, items processed, items sent, and items failed. If the first line is healthy but the third is low, you know the problem is between the Collector and the vendor. If the first line itself is low, the problem is upstream in the applications. This simple layout turns a mysterious blank screen into a clear question about which stage to investigate.
Do not only alert on errors. Alert when a normally busy source goes quiet. A zero is also a measurement, and in telemetry it very often means a broken pipe rather than a peaceful system.
12Benefits, Drawbacks, and Trade-offs
Every choice has a price. An honest view helps you decide when a vendor exporter is the right tool.
Advantages
- Works with destinations that lack OTLP. It can reach products that do not yet accept the standard format.
- Understands vendor identity. It can use a platform’s native login system instead of static keys.
- Handles vendor quirks. It knows the right names, limits, and formats so you do not have to.
- Often vendor-maintained. The people who know the product best usually write and update it.
- Quick to start. A ready-made exporter gets you to a working dashboard fast.
- Access to special features. Some capabilities are only available through the vendor’s own format.
Disadvantages
- Ties you to one product. Moving elsewhere means replacing the exporter and checking the data again.
- Translation can lose detail. Names and structures may change on the way.
- Uneven maturity. Some exporters are early or lightly maintained and may change without much warning.
- Bigger programs and more risk. More components mean a larger surface to patch and secure.
- Different behavior per vendor. Each exporter has its own settings and its own surprises.
- May be retired. When a vendor adopts OTLP, its special exporter can be deprecated.
Common trade-offs in plain language
| Choice | What you gain | What it costs |
|---|---|---|
| OTLP to a vendor endpoint | Neutrality and easy switching | Cannot use some vendor-only features |
| Vendor exporter in the Collector | Native format and identity support | Tied to that product and its exporter’s upkeep |
| Vendor exporter in the application | Simplest demo | Keys and vendor code inside every program |
| Vendor distribution | Fast, supported start | Vendor habits and components come along |
| Custom-built Collector | Small, safer program with only the parts you need | You must build and upgrade it yourself |
| Sending to two vendors | Safe comparison and migration | Double the volume and double the cost while it lasts |
When you weigh the costs, count more than the price of the vendor’s bill. Include the time spent learning each exporter’s settings, the effort of upgrading it, and the risk that it changes or is retired. A component that is free to download can still be expensive to own. The standard exporter usually has the lowest total cost of ownership, because it changes slowly and behaves the same everywhere.
Start with OTLP. Reach for a vendor exporter only when you can name a specific reason, such as a missing OTLP endpoint, a needed identity integration, or a vendor-only feature. If you cannot name the reason, the standard exporter is almost always the better choice.
13Good Habits and Design Patterns
Patterns are tried-and-true recipes. Habits are the small routines that keep your exporters dependable and your options open.
OTLP in, vendor out
Applications send only OTLP. The Collector alone knows which vendor exporters to use. Changing vendors becomes a Collector change, not a company-wide project.
Dual export for migration
During a vendor change, send the same data to the old and the new vendor for a while, compare results, and switch over only when you are satisfied.
Process first, export last
Redact, filter, sample, and label before the exporter runs, so only clean and useful data leaves your network, and your bill stays sensible.
Separate keys per environment
Give production, testing, and each team their own credentials, so a leak or a mistake stays small and can be traced.
Custom-built Collector
Build a Collector that contains only the receivers, processors, and exporters you really use. It is smaller, quicker to start, and easier to secure.
Debug beside the vendor
While testing, add the debug exporter next to the vendor exporter, so you can compare what was sent with what arrived.
The migration pattern in pictures
Changing vendors is frightening when it means rewriting applications. With a Collector in the middle, it becomes a careful experiment. You add the new vendor as a second destination, compare what both show, and remove the old one when you are ready.
flowchart LR
APPS["Applications sending OTLP"] --> GW["Gateway Collector"]
GW -->|"full stream"| OLD["Current vendor"]
GW -->|"copy for comparison"| NEW["New vendor"]
OLD --> CMP["Compare results"]
NEW --> CMP
CMP --> DEC{"Happy with the new vendor?"}
DEC -->|Yes| CUT["Stop sending to the old vendor"]
DEC -->|Not yet| FIX["Adjust settings and keep comparing"]
Follow the arrows. All applications keep sending OTLP to the same gateway, and nothing about them changes. The gateway sends the full stream to the current vendor and a copy to the new one. The team compares dashboards, alerts, and costs. If the new vendor is not ready, they adjust settings and keep comparing. When satisfied, they stop sending to the old vendor, and the migration is complete. Because the applications never changed, rolling back is as easy as adding the old destination again.
Habits that pay off
- Prefer OTLP first. Switch to a vendor exporter only for a named reason.
- Check the stability level. Prefer stable and beta components for production. Treat alpha and development components as experiments.
- Know the maintainers. Look at who owns the component, how often it is updated, and how quickly issues are answered.
- Pin versions and read release notes. A vendor exporter can change settings between versions, so upgrade on purpose, not by accident.
- Test with real data. Verify names, units, and labels in the vendor’s screens after every significant change.
- Turn on the queue and retries. Use a disk-backed queue for data you cannot afford to lose.
- Control volume before export. Sampling, filtering, and dropping noisy labels are the cheapest cost savings you will ever make.
- Document the destination map. Write down which data goes to which vendor, under which key, and who owns each key.
When you open a component’s page in the registry or repository, look for three facts first: which signals it supports, what its stability level is for each, and who the code owners are. Those three facts tell you whether to trust it with production traffic.
14Common Mistakes, Anti-patterns, and Myths
Learning from other people’s mistakes is much cheaper than making your own.
An anti-pattern is a habit that looks sensible at first but causes trouble later. These four appear again and again in real exporter setups.
What it looks like
Each application includes the vendor’s exporter library and its own copy of the secret key.
Why it hurts
Switching vendors means editing and redeploying every program. A leaked key must be replaced in dozens of places. Vendor code runs inside your business logic, and a slowdown there can slow your customers.
Better approach
Let applications send OTLP to a Collector, and keep vendor exporters and keys only in the Collector.
What it looks like
All telemetry, including health checks, debug detail, and unbounded labels, is sent to the vendor “just in case.”
Why it hurts
Bills grow quickly, dashboards fill with noise, and private data may leave the network. The valuable signals are buried under rubbish.
Better approach
Filter, sample, and redact before export, and review the volume regularly.
What it looks like
A team builds a critical pipeline on an exporter labeled development or alpha because it was the first search result.
Why it hurts
Settings may change, features may be removed, and the component may be dropped. A routine upgrade then breaks the pipeline.
Better approach
Check the stability level, prefer mature components for production, and plan for change when you must use an early one.
What it looks like
The team sees that the exporter reports success and assumes the vendor’s dashboards must be right.
Why it hurts
Translation may rename fields, drop attributes, or mishandle metric styles. Charts look plausible but are wrong, and decisions are made on bad numbers.
Better approach
Compare what was sent with what arrived, and check names, units, and values on the vendor’s side after every important change.
One further trap deserves mention. Teams sometimes build a delicate chain of renaming rules to make a vendor exporter produce exactly the names they like. Each rule seems small, but together they form a hidden layer that nobody fully understands, and it breaks quietly when either side changes. Prefer to follow the agreed semantic conventions and the vendor’s documented mappings, and add custom renaming only where it brings real value.
Myths and realities
| Myth | Reality |
|---|---|
| Using OpenTelemetry means you cannot use a vendor’s product. | OpenTelemetry works with a large number of vendors. It simply lets you choose, and change your mind later. |
| A vendor exporter is always better than OTLP. | When the vendor accepts OTLP, the standard exporter is usually simpler, cleaner, and more portable. |
| Sending OTLP to a vendor is lock-in. | Only the endpoint and key belong to the vendor. Your instrumentation stays neutral. |
| All exporters are equally mature. | Maturity varies widely, from stable to experimental. Always check the stability level. |
| The exporter makes the data safe. | It only delivers. You must redact secrets, protect keys, and limit exits yourself. |
| Vendor exporters are written by the OpenTelemetry core team. | Many are contributed and maintained by the vendors or community members, and their quality follows the care they receive. |
15A Worked Example and Real-World Scenarios
Let us estimate how much data an exporter will carry, the way a platform engineer would, using simple arithmetic.
Imagine an online store whose services create about 30,000 spans per second at the busiest hour. About one fifth of those spans come from health checks that nobody ever reads. The team plans to keep one quarter of the remaining traces after sampling. Each span averages about one kilobyte when sent. These numbers are for illustration only; real systems must be measured.
| Step | Calculation | Result |
|---|---|---|
| Spans created | Measured at the source | 30,000 spans per second |
| After dropping health checks | 30,000 minus one fifth | 24,000 spans per second |
| After keeping one quarter | 24,000 divided by 4 | 6,000 spans per second |
| Data rate sent to the vendor | 6,000 times 1 kilobyte | About 6 megabytes per second |
| Data per day | 6 megabytes times 86,400 seconds | About 518 gigabytes |
| Data per 30 days | 518 gigabytes times 30 | About 15.5 terabytes |
| Without any filtering or sampling, per 30 days | 30 megabytes per second over 30 days | About 77.8 terabytes |
Reading the table from the top, the filtering and sampling steps reduce the stream from 30 megabytes per second to 6 megabytes per second. That is an eighty percent reduction in the volume sent to the vendor, and, for vendors that bill by volume, a similar reduction in cost. The lesson is that the cheapest data to pay for is data you never export. Those two processing steps, done once in a central Collector, are worth far more than any clever exporter setting.
The table also warns about the migration pattern from the previous chapter. If the team sends the same stream to two vendors for comparison, the volume sent doubles for as long as the trial lasts. A common remedy is to compare using a smaller sample for the second vendor, which gives enough evidence at a fraction of the price.
The arithmetic above also helps a team talk calmly with a vendor. Instead of asking for a discount in the dark, the platform team can say how many gigabytes it expects each month and what it has done to keep that number reasonable. Vendors tend to respond better to customers who know their own data, and the team gains confidence that the bill will not surprise anyone.
Real-world scenarios
A start-up with one vendor
A small team has three services and one monitoring product that accepts OTLP. They use the standard OTLP exporter in each service pointing at the vendor’s address. It is simple, and they know that if they outgrow the product, only an address and a key need to change.
A company on a large cloud platform
A business runs everything on one cloud provider and wants its telemetry to land in that provider’s native monitoring tools. The Collector uses the provider’s exporter, which signs requests with the platform’s identity system. No long-lived key exists anywhere, which the security team likes very much.
An enterprise changing vendors
A large company wants to move from one observability product to another. Because every application already sends OTLP to a gateway Collector, the platform team adds the new vendor as a second destination, compares results for a month using a sample of the traffic, and then retires the old one. No application developer has to change a single line.
A regulated business with two destinations
A financial company sends detailed telemetry to an internal open source backend inside its own network, and a masked and sampled copy to an outside vendor for the support team. One Collector, two exporters, and different processors on each path make the arrangement simple to run and easy to audit.
16Frequently Asked Questions
17Summary and Key Takeaways
The whole story in a few simple ideas you can carry with you.
Key Takeaways
- An exporter carries telemetry out. A vendor exporter carries it to one specific company’s product, translating it into that company’s own format and adding the right address and credentials.
- OTLP is the shared language. Many vendors now accept it directly, so the standard exporter is usually the simplest and most portable choice.
- Vendor exporters still have a place. Use them when a destination lacks OTLP, when a platform’s own identity system helps, or when a vendor-only feature matters.
- Keep applications neutral. Let applications send OTLP to a Collector, and keep vendor exporters and keys inside the Collector, where changes are easy.
- Check maturity before trusting. Read each component’s stability level, its supported signals, and who maintains it, and pin versions.
- Control what leaves. Filter, sample, and redact before export, protect your keys, and encrypt every connection, because the exporter is the exit door of your data.
- Watch both ends. Monitor sent, failed, and queued counts at the Collector, and confirm in the vendor’s screens that names, units, and values are right.