---
title: Heroku Logplex
slug: telemetry-pipeline/heroku-logplex
docTags: 
createdAt: 2025-04-21T00:52:09.076Z
---

## Heroku Logplex Source

The Heroku Logplex source receives log data from **Heroku log drains** via Heroku’s Logplex system. Logplex is the routing layer responsible for collecting and forwarding logs generated by Heroku applications, dynos, routers, and add-ons.

This source runs in an **aggregator** role and is designed for reliable log ingestion with **at-least-once delivery guarantees** and acknowledgement support.

## Network Binding

### Required Field

- **address** (string)
  &#x20;The socket address the source listens on for incoming HTTP connections.
  &#x20;This must include both IP address and port.&#x20;

This address must be reachable from Heroku’s Logplex infrastructure or from any intermediary forwarding layer.

## Acknowledgements

### Deprecated Configuration

- **acknowledgements.enabled**&#x20;

Acknowledgement configuration at the source level is deprecated.
&#x20;Acknowledgement behavior is now controlled globally or at the sink level.

Changing this setting has **no effect** on delivery guarantees.

## Authentication (auth)

Defines how incoming HTTP requests are authenticated.

:::BlockQuote
Authentication credentials are passed via HTTP headers and must be used **only over HTTPS**.
:::

### Supported Strategies

- **basic**
  &#x20;Uses HTTP Basic Authentication with a username and password.&#x20;
- **custom**
  &#x20;Uses a **VRL boolean expression** to validate incoming requests.&#x20;

### Strategy-Specific Fields

- **auth.username**
  &#x20;Username for basic authentication.&#x20;
- **auth.password**
  &#x20;Password for basic authentication.&#x20;
- **auth.source**
  &#x20;VRL expression used to validate the incoming request when using custom authentication.&#x20;

## Decoding Configuration (decoding)

Controls how incoming raw bytes are converted into log events. Some decoders may also infer event structure automatically.

### Codec Selection

- **decoding.codec** (string, default: bytes)&#x20;

Supported codecs include:

- bytes&#x20;
- json&#x20;
- avro&#x20;
- gelf&#x20;
- influxdb&#x20;
- syslog&#x20;
- protobuf&#x20;
- otlp&#x20;
- native&#x20;
- native\_json&#x20;
- vrl&#x20;

### Codec-Specific Behavior

- **Lossy decoding** options determine whether invalid UTF-8 sequences are replaced or rejected.&#x20;
- **Avro and Protobuf** codecs require schema or descriptor configuration.&#x20;
- **VRL decoding** executes a VRL program to produce the final event.&#x20;

## Framing Configuration (framing)

Defines how individual log events are extracted from the incoming byte stream before decoding.

### Supported Framing Methods

- bytes&#x20;
- character\_delimited&#x20;
- newline\_delimited&#x20;
- length\_delimited&#x20;
- varint\_length\_delimited&#x20;
- octet\_counting&#x20;
- chunked\_gelf&#x20;

Each framing method supports safety limits (such as maximum frame length or timeout) to prevent unbounded memory usage when processing malformed input.

## HTTP Keepalive (keepalive)

Controls HTTP connection reuse behavior for incoming log drain connections.

### Available Options

- **max\_connection\_age\_secs**
  &#x20;Maximum lifetime of an HTTP connection before it is closed.&#x20;
- **max\_connection\_age\_jitter\_factor**
  &#x20;Adds randomized jitter to connection lifetime to avoid connection storms.&#x20;

These settings apply to HTTP/0.9, HTTP/1.0, and HTTP/1.1 connections.

## Query Parameters

- **query\_parameters** (list of strings)
  &#x20;Specifies which URL query parameters are included in emitted log events.&#x20;

Wildcards are supported. Query parameters override body fields when name conflicts occur.

## TLS Configuration (tls)

Configures TLS for incoming HTTPS connections.

### Supported Options

- **enabled**&#x20;
- **crt\_file**&#x20;
- **key\_file**&#x20;
- **key\_pass**&#x20;
- **ca\_file**&#x20;
- **alpn\_protocols**&#x20;
- **server\_name**&#x20;
- **verify\_certificate**&#x20;
- **verify\_hostname**&#x20;

:::BlockQuote
Disabling certificate or hostname verification is strongly discouraged unless the security implications are fully understood.
:::

