---
title: Http Server
slug: telemetry-pipeline/http-server
docTags: 
createdAt: 2025-04-21T00:45:58.630Z
---

# HTTP Server Source

Receive logs, metrics, and traces over HTTP using a built-in HTTP server.

This source allows worker to expose an HTTP endpoint and ingest telemetry data pushed by external systems. It is commonly used for custom integrations, webhooks, and systems that do not support native streaming protocols.

## Ingestion Model

- worker runs an embedded HTTP server&#x20;
- External producers send telemetry data via HTTP requests&#x20;
- Requests are decoded based on the configured codec&#x20;
- Successfully processed requests receive an HTTP success response&#x20;
- Failed decoding or processing returns an error response&#x20;

This model enables push-based telemetry ingestion and decouples producers from backend pipelines.

## Source Configuration Parameters

## sources.\<id>.type

**required**
&#x20;**string**

Specifies the source type.

- Must be set to http\_server&#x20;

## sources.\<id>.address

**required**
&#x20;**string**

Network address the HTTP server listens on.

- Format: \<ip>:\<port>&#x20;
- Use 0.0.0.0 to listen on all network interfaces&#x20;
- Port must be available on the host&#x20;

## sources.\<id>.path

**optional**
&#x20;**string**

HTTP path used to receive incoming requests.

- Only requests matching this path are accepted&#x20;
- Path matching is exact&#x20;

**Default**

:::BlockQuote
/
:::

## sources.\<id>.method

**optional**
&#x20;**string**

HTTP method accepted by the server.

- Common values: POST, PUT&#x20;
- Requests using other methods are rejected&#x20;

**Default**

:::BlockQuote
POST
:::

## sources.\<id>.encoding

**optional**
&#x20;**object**

Defines how incoming HTTP request bodies are decoded into events.

### sources.\<id>.encoding.codec

**required**
&#x20;**string**

Codec used to decode the HTTP request body.

Supported codecs include:

- json&#x20;
- text&#x20;
- syslog&#x20;
- gelf&#x20;
- avro&#x20;
- protobuf&#x20;
- influxdb&#x20;
- otlp&#x20;
- native&#x20;
- bytes&#x20;

The selected codec determines:

- Event structure&#x20;
- Signal type (logs, metrics, traces)&#x20;
- Parsing behavior&#x20;

## Framing Configuration

Controls how multiple events are extracted from a single HTTP request body.

## sources.\<id>.framing

**optional**
&#x20;**object**

Framing strategy applied before decoding.

### sources.\<id>.framing.method

**optional**
&#x20;**string**

Framing strategy used to split the request body into individual frames.

Supported methods:

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

Each frame is decoded as a separate event.

### sources.\<id>.framing.delimiter

**optional**
&#x20;**string**

Delimiter character used with character\_delimited framing.

### sources.\<id>.framing.max\_frame\_length

**optional**
&#x20;**unsigned integer**

Maximum allowed frame size in bytes.

- Prevents memory exhaustion from malformed payloads&#x20;
- Frames exceeding this size are dropped&#x20;

##

## sources.\<id>.response\_code

**optional**
&#x20;**unsigned integer**

HTTP status code returned on successful ingestion.

- Allows compatibility with systems expecting non-default success codes&#x20;

**Default**

:::BlockQuote
200
:::

## TLS Configuration

Enables HTTPS for secure ingestion.

## sources.\<id>.tls

**optional**
&#x20;**object**

TLS configuration block.

### sources.\<id>.tls.enabled

**optional**
&#x20;**boolean**

Enables or disables TLS.

### sources.\<id>.tls.crt\_file

**optional**
&#x20;**string**

Path to the TLS certificate file.

### sources.\<id>.tls.key\_file

**optional**
&#x20;**string**

Path to the TLS private key file.

### sources.\<id>.tls.ca\_file

**optional**
&#x20;**string**

Path to the certificate authority file.

- Used for client certificate validation&#x20;

## Authentication

## sources.\<id>.auth

**optional**
&#x20;**object**

Authentication configuration for incoming HTTP requests.

### sources.\<id>.auth.strategy

**optional**
&#x20;**string**

Authentication strategy.

Supported strategies:

- basic&#x20;
- bearer&#x20;
- custom&#x20;

### sources.\<id>.auth.username

**optional**
&#x20;**string**

Username for Basic authentication.

### sources.\<id>.auth.password

**optional**
&#x20;**string**

Password for Basic authentication.

### sources.\<id>.auth.token

**optional**
&#x20;**string**

Bearer token required in the Authorization header.

## Request Limits and Protection

## sources.\<id>.max\_request\_bytes

**optional**
&#x20;**unsigned integer**

Maximum allowed size of an HTTP request body.

- Requests exceeding this limit are rejected&#x20;

## sources.\<id>.request\_timeout\_secs

**optional**
&#x20;**unsigned integer**

Maximum time allowed to receive and process a request.

- Protects against slow or stalled clients&#x20;

## Metadata Enrichment

Each event can be enriched with HTTP-specific metadata, including:

- Client IP address&#x20;
- HTTP headers&#x20;
- Request path&#x20;
- HTTP method&#x20;

These fields enable:

- Source attribution&#x20;
- Routing decisions&#x20;
- Auditing&#x20;
- Security analysis&#x20;

## Multi-Signal Support

The HTTP Server source supports:

- **Logs**&#x20;
- **Metrics**&#x20;
- **Traces**&#x20;

Signal type determination depends on:

- Selected codec&#x20;
- Payload structure&#x20;
- Framing configuration&#x20;

## Common Use Cases

- Custom application log ingestion&#x20;
- Webhook-based integrations&#x20;
- OTLP ingestion over HTTP&#x20;
- Lightweight telemetry gateways&#x20;
- Push-based observability pipelines
