Destinations
A destination writes the records a route sends it to a system. Each kind of destination has a page of its own.
Kinds
Log analytics
| Kind | type | What it does |
|---|---|---|
| Elasticsearch | elasticsearch | Index documents through the Bulk API. |
| Log Analytics workspace | logAnalytics | Send records to a Log Analytics table through a data collection rule. |
| Splunk HEC | splunkHec | Send events to HTTP Event Collector. |
Object storage
| Kind | type | What it does |
|---|---|---|
| Amazon S3 | s3 | Write batches as objects in a bucket. |
| Azure Blob Storage | azureBlob | Write batches as blobs in a container. |
| Google Cloud Storage | gcs | Write batches as objects in a bucket. |
| SFTP | sftp | Write batches as files in a directory on an SFTP server. |
Observability
| Kind | type | What it does |
|---|---|---|
| Prometheus remote_write | prometheus | Send samples over remote_write to Prometheus or any store that takes it. |
Streams
| Kind | type | What it does |
|---|---|---|
| Azure Event Hubs | eventHubs | Write records to event hubs through their Kafka endpoint. |
| Kafka | kafka | Write processed records to topics. |
Tables
| Kind | type | What it does |
|---|---|---|
| Apache Iceberg | iceberg | Commit Parquet files to a table in S3 through its REST catalog. |
| Delta Lake | delta | Commit Parquet files to a table in S3 through its log. |
Web
| Kind | type | What it does |
|---|---|---|
| HTTP | http | POST records to any HTTP service, batched or one per request. |
How it works
What happens to a record decides when its batch's position commits. Until it commits, a restart reads the batch again.
| The record | The position commits |
|---|---|
| Is acknowledged by every destination it was sent to | Once every older batch has committed too. |
| Is dropped by a step, or picked by no deliver rule | With its batch. |
| Reaches a destination that does not answer | Only once it lands. Egress retries, and a destination that stays down pauses the sources feeding it. |
| Carries an exception | By the answer to it, as below. A pipeline's exceptions are answered by its route's exceptions over the group's; Unmatched and Unprocessable by the group's; Refused
by the destination's over the group's. |
| Answer | The position commits |
|---|---|
ignore, tag | Once the destinations the record goes on to acknowledge it. |
drop | With its batch. |
deliver | Once every destination named acknowledges the record. |
block | Not until the record goes through. A refused record is sent again until the destination takes it; any other stops its source until a new config is deployed. |
Unmatched, Unprocessable and Refused block unless an answer says otherwise, and take no ignore or tag. Exceptions covers each answer.
Settings
A destination is one entry of the bundle's Destinations array. Every kind takes these settings:
id string required
The destination's name, unique among destinations. Routes and other destinations' answers name it.
events-outsiem-archiveexceptions answers default the group's answer, block unless it gives another
What happens to a record this destination refuses: block keeps it and sends it again until the destination takes it, drop lets it go, and deliver sends it to other destinations. See Handle refused records.
{"kinds": {"Refused": "drop"}}{"kinds": {"Refused": "block"}}Formats
A destination's format decides what it writes of each record. Routes and exception answers
name only destinations, so one record can reach two destinations in two forms.
| format | What it writes |
|---|---|
| json, ndjson, parquet, avro, csv | The record as the pipeline wrote it. |
| text | The text of the field field names, _raw by default. The destination
refuses a record without that field. |
| bytes | One field's bytes, once per source record. The destination's field names
the field, and defaults to __source.bytes: each record's bytes as the
source received them, before any pipeline ran. Those bytes let you replay records: a source that reads them back gets what
the original source got. |
Each kind writes only some formats:
| Destination | format |
|---|---|
| HTTP | json (default), text, bytes (base64 in a batch: bodies) |
| Kafka | json (default), text, bytes, avro |
| Elasticsearch | json |
| Splunk HEC, event endpoint | json (default), text |
| Splunk HEC, raw endpoint | json (default), text, bytes |
| S3, Google Cloud Storage, Azure Blob, SFTP | ndjson (default), json, parquet, avro, csv, text, bytes |
| Apache Iceberg, Delta Lake | parquet, as the table's data files |
Fields
Smeltr never delivers a record field whose name starts with __. A pipeline sets __destination fields to steer a record, and each kind reads only its own:
| Field | Type | Holds |
|---|---|---|
__destination.topic | str | The Kafka topic or Event Hub a destination writes the record to. Null means the default value for that destination. |
__destination.index | str | The index an Elasticsearch or Splunk HEC destination files the record under. Null means the destination's default index. A Splunk HEC destination on the raw endpoint refuses a record naming an index other than its own. |
__destination.id | str | The Elasticsearch document ID, used when the destination's document ID setting is dedupe or overwrite. When it is null, the destination's id field names the field that gives it, and with neither the document is sent with no ID. |
__destination.prefix | str | What an S3, Google Cloud Storage or Azure Blob Storage destination's object key starts with, taken as it is. Null means the destination's own prefix, with its time placeholders filled in. |
Add a destination
- Select the worker group and work on a branch.
- Open Build → Destinations and choose + Add destination.
- Choose its type, give it a unique id and fill in its settings, then choose Add. Save the page.
- Connect it to a route's delivery path, whose condition selects the records it receives from a source. Follow the routing example.
- Review and deploy, then verify it.
Verify
- Check that the intended workers are online and run the deployed commit.
- Send a record you can recognize through a source and a route to the destination.
- Check Status and Logs for source, routing or destination errors.
- Find the record at the destination and check its fields.
A preview of a saved sample checks the pipeline, not the live connection.
Troubleshooting
- No records arrive
- Follow No records arriving to check input, worker configuration, routing, filtering and delivery in order.
- TLS verification fails
- Check the server name and the authority in the connection identity. If the server uses a private CA, the connector must trust it.