Ports & networking

The collector listens on a handful of local ports on the host it runs on — they're yours, not ours. Nothing here phones home except the outbound HTTPS export of your telemetry to the Trefur platform.

The core listeners

A default collector exposes four core listeners:

DefaultPurposeConfig keyNote
:4317OTLP gRPC receiverinputs.otel.grpc_addrStandard OpenTelemetry OTLP/gRPC port
:4318OTLP HTTP receiverinputs.otel.http_addrStandard OpenTelemetry OTLP/HTTP port
:9090SDK telemetry receiverinputs.sdk_proxy.addrTrefur SDKs POST telemetry here
:8888Health + Prometheus metricshealth.addr/health, /metrics, /metrics/prometheus

:4317 and :4318 are the standard OpenTelemetry OTLP ports, so any existing OTLP exporter you already run points at the collector with zero changes.

Optional input listeners

When you enable the optional capture inputs, each opens its own configurable listener:

DefaultInputConfig key
:8889Shell hookinputs.shell_hook.addr
:8890HTTP forward proxyinputs.http_proxy.addr
:9091LLM reverse proxyinputs.llm_proxy.addr
:9092MCP proxyinputs.mcp_proxy.addr
:9053DNS proxy (UDP + TCP)inputs.dns_proxy.addr
:9094WebSocket proxyinputs.ws_proxy.addr
:9095Chrome DevTools (CDP) proxyinputs.cdp_proxy.addr

These only listen when you turn the corresponding input on.

Everything is configurable

Every listener is fully configurable — set the matching config key to any host:port. For example, to bind the OTLP HTTP receiver to a custom port on all interfaces:

inputs:
  otel:
    http_addr: "0.0.0.0:14318"   # any free port, any interface

A port clash fails fast — with a clear message

If a port the collector needs is already taken on the host, it does not silently keep running deaf on that listener. It fails loudly at startup with a message that names the exact config key to change. For example, if something already holds :4318:

OTEL HTTP receiver: cannot bind :4318: listen tcp :4318: bind: address
already in use — if the port is already in use, set inputs.otel.http_addr
in the collector config to a free port

The fix is exactly what the message says — point that input at a free port:

inputs:
  otel:
    http_addr: ":14318"   # any free port
One deliberate exception: the health/metrics server is non-critical to ingest, so on a collision it auto-falls-back through the next few ports (:8889:8897) and logs which port it landed on, rather than failing startup. Every ingest-path listener fails fast as above.

Networking summary

  • All listeners are local to the host — the collector doesn't expose anything to the public internet on its own.
  • The only outbound connection is the HTTPS export of your telemetry to the Trefur platform.
  • Standard OTLP ports mean existing OpenTelemetry exporters work unchanged.
  • Any clash is a loud, actionable startup failure — never a silent half-running collector.

Next