For the complete documentation index, see llms.txt. This page is also available as Markdown.

OpAMP Gateway

The OpAMP Gateway Extension is a relay between downstream OpAMP-supported OpenTelemetry Collectors and an upstream OpAMP server like Bindplane. It is not a separate binary — it runs inside a collector process deployed at the network boundary.

How the Gateway Works

The opampgateway keeps a fixed pool of upstream WebSockets (default 3) and assigns each new collector to the connection with the fewest collectors, so the server sees only a small number of upstream links no matter how many collectors connect.

It relays OpAMP messages without changing them—collector-to-server traffic goes out on the gateway's upstream connection, and server-to-collector replies are routed back using an internal mapping—so collectors and server behave as if the connection topology were direct.

Authentication is not implemented in the gateway. When a collector connects to the gateway, it accepts the session and authenticates with Bindplane.

Prerequisites

  • BDOT Collector v1.95.0 or greater on any collector that will run the gateway extension

  • Network access:

    • The gateway must have outbound access to the OpAMP server

    • Collectors must have outbound access to the gateway

  • A created Configuration in Bindplane to roll out to the gateway

Step 1: Create an OpAMP Extension in Bindplane

Create a configuration and click the bottom right ⚙️ to open the extensions.

Choose the OpAMP Gateway.

Configure it to point to Bindplane's OpAMP endpoint. Enable TLS and set the downstream listener to localhost and port 4320.

This will configure an extension in your BDOT collector's config.yaml file:

You do not need to manually configure anything since Bindplane will remotely push down this config when you roll it out to the gateway collector.

Step 2: Configure Downstream Collectors

Point each collector collector's OpAMP connection at the gateway instead of the upstream server. Only the endpoint changes — capabilities and all other settings remain identical.

You'll do this using the manager.yaml:

  • The only line that needs to be updated is the endpoint, point to the OpAMP Gateway instead of Bindplane directly.

Step 3: Verify Connectivity

  1. Check gateway collector logs for successful upstream WebSocket connections.

  2. Verify collectors appear in your OpAMP server's fleet view (e.g. Bindplane Collectors UI).

  3. Roll out the configuration from Bindplane and confirm it is applied to the gateway.

manager.yaml Reference

The manager.yaml file defines the BDOT collector's OpAMP connection — separate from config.yaml, which defines the telemetry pipeline. When Bindplane rolls out a pipeline config to a collector, config.yaml is remotely updated; manager.yaml stays stable.

Default file locations:

  • Linux: /opt/observiq-otel-collector/manager.yaml

  • Windows: C:\Program Files\observIQ OpenTelemetry Collector\manager.yaml

  • Docker: path set by the MANAGER_YAML_PATH environment variable

Field
Required
Description

endpoint

Yes

WebSocket URL of the OpAMP server or gateway (ws:// or wss://)

secret_key

Yes

Shared secret for authenticating with the OpAMP server

agent_id

No

Stable unique identifier (ULID or UUID). Auto-generated on first connection. Do not change — the server uses it to recognize the collector across restarts

labels

No

key=value pairs for grouping and targeting in Bindplane

agent_name

No

Human-readable name shown in the Bindplane UI

measurements_interval

No

How often the collector reports throughput metrics upstream

topology_interval

No

How often the collector reports topology information upstream

extra_measurements_attributes

No

Additional key-value attributes attached to measurement data

tls_config.ca_file

No

Custom CA certificate path (for self-signed server certs)

tls_config.insecure_skip_verify

No

Skip TLS verification — for testing only

tls_config.cert_file / key_file

No

Client certificate and key for mTLS

Annotated example:

Key things to know:

  • Only endpoint is required. If neither manager.yaml nor OPAMP_ENDPOINT env var is present, the collector starts in standalone mode with no OpAMP connection.

  • In Docker, manager.yaml is auto-generated at the MANAGER_YAML_PATH location from environment variables. You don't need to create it manually.

  • When spinning up fresh Docker containers, clear any existing manager.yaml in the storage volume to avoid the collector reconnecting with a stale identity.

  • The telemetry pipeline (config.yaml) is pushed remotely from Bindplane after the collector connects — you do not need a local pipeline config for managed collectors.

Further Reading

Last updated

Was this helpful?