Install BDOT Collector in Docker Compose
Steps to deploy BDOT Collector using Docker Compose, including configuration and service definition.
Installing a BDOT Collector in Docker Compose has a different flow compared to collectors for Linux, Mac, and Windows.
Install a BDOT Collector
Navigate to the Agents page and select Install Agent
Choose the Linux Platform
Copy the
secret-key
andopamp-endpoint
Create a
docker-compose.yaml
and paste this content belowvolumes: bdot-collector-storage: # persistent storage for the bdot-collector services: bdot-collector: image: ghcr.io/observiq/bindplane-agent:1.76.3 # Select the image version you prefer container_name: bdot-collector hostname: bdot-collector command: ["--config=/etc/otel/config/config.yaml"] volumes: - ./config:/etc/otel/config - bdot-collector-storage:/etc/otel/storage ports: - "4317:4317" # OTLP gRPC - "4318:4318" # OTLP HTTP - "13133:13133" # Health check extension - "55679:55679" # ZPages debugging environment: OPAMP_ENDPOINT: <your-opamp-endpoint> # use "wss://app.bindplane.com/v1/opamp" for Bindplane Cloud OPAMP_SECRET_KEY: <your-secret-key> OPAMP_LABELS: ephemeral=true MANAGER_YAML_PATH: /etc/otel/storage/manager.yaml CONFIG_YAML_PATH: /etc/otel/config/config.yaml LOGGING_YAML_PATH: /etc/otel/config/logging.yaml
Create one directory and two files for
config
.> config config.yaml logging.yaml docker-compose.yaml
Paste this into your
config.yaml
file in theconfig
directory.receivers: nop: processors: batch: exporters: nop: service: pipelines: metrics: receivers: [nop] processors: [batch] exporters: [nop] telemetry: metrics: level: none
Paste this into your
logging.yaml
file in theconfig
directory:output: stdout level: info
The
manager.yaml
will be autogenerated when connecting the collector to Bindplane and rolling out a configuration.
Start the BDOT Collector:
docker compose up -d
Create a configuration for Docker Compose
Navigate to the Configurations and select Create Configuration
Select the Linux Platform and give it a name
Add sources and destinations and create the configuration
Click Add Agents, select the BDOT Collector you created above, and click Apply
Finally, click Start Rollout, and you're done!
Example Installation
This example uses the Host metrics, OTLP logs and metrics, and file logs.

Get the BDOT Collector secret key, installation id, and OpAMP configuration keys from the Collector installation page.

Ensure that the OPAMP_ENDPOINT
environment variable has the correct value for your server.
- name: OPAMP_ENDPOINT
value: "ws://your-bindplane-server:3001/v1/opamp" # use "wss://app.bindplane.com/v1/opamp" for Bindplane Cloud
The port should be 3001
for non-TLS, and 443
if TLS is enabled. Similarly, the protocol should be ws
(websocket) when TLS is not configured, and wss
(secure web socket) when TLS is enabled.
Start Docker Compose with docker compose up -d
. Once deployed, your collector will appear on the Agents page, and they will be bound to your configuration.

TLS
BDOT Collectors in Docker Compose can be configured to connect to Bindplane using TLS. If the Bindplane TLS certificate is publicly signed, no action is required. If the certificate is signed by an internal certificate authority, the collector can be configured with a custom certificate authority for verifying the Bindplane certificate.
Your certificate authority file (ca.crt) can be added to a BDOT Collector docker-compose.yaml
with the OPAMP_TLS_CA
environment variable. The sample below considers you storing the ca.crt
in a certs
directory and binding the volume to the bdot-collector
.
# ...
bdot-collector:
image: ghcr.io/observiq/bindplane-agent:1.76.3 # Select the image version you prefer
container_name: bdot-collector
hostname: bdot-collector
command: ["--config=/etc/otel/config/config.yaml"]
volumes:
- ./config:/etc/otel/config
- bdot-collector-storage:/etc/otel/storage
- ./certs:/etc/otel/certs # Add certs volume
ports:
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
- "13133:13133" # Health check extension
- "55679:55679" # ZPages debugging
environment:
OPAMP_ENDPOINT: <your-opamp-endpoint> # use "wss://app.bindplane.com/v1/opamp" for Bindplane Cloud
OPAMP_SECRET_KEY: <your-secret-key>
OPAMP_LABELS: ephemeral=true
CONFIG_YAML_PATH: /etc/otel/config/config.yaml
MANAGER_YAML_PATH: /etc/otel/storage/manager.yaml
LOGGING_YAML_PATH: /etc/otel/config/logging.yaml
OPAMP_TLS_CA: /etc/otel/certs/ca.crt # use this env var
# Alternatively, skip verification
OPAMP_TLS_SKIP_VERIFY: false # Set to true to skip TLS verification
# ...
Using this example, the CA certificate ca.crt will be mounted to /opt/tls/ca.crt. The OpAMP client will be configured to use this certificate authority when validating CA certificates.
Mutual TLS (mTLS)
When using mutual TLS, the same process is used. In this case, a client keypair is provided. This example uses client.crt
and client.key
.
With these secrets you can modify your BDOT Collector Docker Compose service and add environment variables for the TLS certs and keys.
# ...
bdot-collector:
image: ghcr.io/observiq/bindplane-agent:1.76.3 # Select the image version you prefer
container_name: bdot-collector
hostname: bdot-collector
command: ["--config=/etc/otel/config/config.yaml"]
volumes:
- ./config:/etc/otel/config
- bdot-collector-storage:/etc/otel/storage
- ./certs:/etc/otel/certs # Add certs volume
ports:
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
- "13133:13133" # Health check extension
- "55679:55679" # ZPages debugging
environment:
OPAMP_ENDPOINT: <your-opamp-endpoint> # use "wss://app.bindplane.com/v1/opamp" for Bindplane Cloud
OPAMP_SECRET_KEY: <your-secret-key>
OPAMP_LABELS: ephemeral=true
CONFIG_YAML_PATH: /etc/otel/config/config.yaml
MANAGER_YAML_PATH: /etc/otel/storage/manager.yaml
LOGGING_YAML_PATH: /etc/otel/config/logging.yaml
OPAMP_TLS_CA: /etc/otel/certs/ca.crt
OPAMP_TLS_CERT: /etc/otel/certs/client.crt # Add env vars for the client certificate
OPAMP_TLS_KEY: /etc/otel/certs/client.key # and key
# ...
Last updated
Was this helpful?