LinkMesh

Search docs, blog and changelog

ENDE

Snippets · Sources

Receive OTLP over gRPC and HTTP

The front door of a pipeline. Accept OTLP from application SDKs and from other collectors, on both transports, for traces, metrics and logs.

Signals
LogsMetricsTraces
Category
Collection
Source
OTLP
Destination
OTLP/HTTP endpoint
OpenTelemetry Collector YAML
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  memory_limiter:
    check_interval: 1s
    limit_percentage: 80
  batch: {}

exporters:
  otlphttp:
    endpoint: https://your-backend:4318

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlphttp]
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlphttp]
    logs:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlphttp]
Grafana Alloy
// stability: generally-available — runs on a default Alloy install.

otelcol.receiver.otlp "default" {
	grpc {
		endpoint = "0.0.0.0:4317"
	}

	http {
		endpoint = "0.0.0.0:4318"
	}

	output {
		traces  = [otelcol.processor.memory_limiter.default.input]
		metrics = [otelcol.processor.memory_limiter.default.input]
		logs    = [otelcol.processor.memory_limiter.default.input]
	}
}

otelcol.processor.memory_limiter "default" {
	check_interval   = "1s"
	limit_percentage = 80

	output {
		traces  = [otelcol.processor.batch.default.input]
		metrics = [otelcol.processor.batch.default.input]
		logs    = [otelcol.processor.batch.default.input]
	}
}

otelcol.processor.batch "default" {
	output {
		traces  = [otelcol.exporter.otlphttp.default.input]
		metrics = [otelcol.exporter.otlphttp.default.input]
		logs    = [otelcol.exporter.otlphttp.default.input]
	}
}

otelcol.exporter.otlphttp "default" {
	client {
		endpoint = "https://your-backend:4318"
	}
}

Complete config files, each checked with the tool's own validate command (otelcol-contrib v0.161.0, Grafana Alloy v1.19.2). Replace https://your-backend:4318 with your own OTLP endpoint before you run it.

The gotcha

The bind address decides who can reach it. Bound to localhost, other containers cannot connect; bound to 0.0.0.0 without TLS, anyone who can reach the port can send to it. This config binds 0.0.0.0, so put it behind your network controls or add TLS.

Skip the YAML on every host

LinkMesh has this job built in as the OTLP gRPC and OTLP HTTP source templates: activate it on a collector from the control plane instead of editing config files host by host. The first 25 Collectors are free after a no-card registration in the OpenSight Customer Portal (5 without one).