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

  1. Navigate to the Agents page and select Install Agent

  2. Choose the Linux Platform

  3. Copy the secret-key and opamp-endpoint

  4. Create a docker-compose.yaml and paste this content below

    volumes:
      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
  5. Create one directory and two files for config.

    > config
        config.yaml
        logging.yaml
      docker-compose.yaml
  6. Paste this into your config.yaml file in the config directory.

    receivers:
      nop:
    processors:
      batch:
    exporters:
      nop:
    service:
      pipelines:
        metrics:
          receivers: [nop]
          processors: [batch]
          exporters: [nop]
      telemetry:
        metrics:
          level: none

NOTE

This is just the initial config, and should not be manually edited. Bindplane will push edits to this file remotely via the roll out feature.

  1. Paste this into your logging.yaml file in the config directory:

    output: stdout
    level: info
  2. The manager.yaml will be autogenerated when connecting the collector to Bindplane and rolling out a configuration.

NOTE

If you want to re-use the manager.yaml you can change the MANAGER_YAML_PATH path to:

MANAGER_YAML_PATH: /etc/otel/config/manager.yaml

When starting new collectors from Docker Compose, make sure to delete the content of the manager.yaml.

  1. Start the BDOT Collector:

    docker compose up -d

Create a configuration for Docker Compose

  1. Navigate to the Configurations and select Create Configuration

  2. Select the Linux Platform and give it a name

  3. Add sources and destinations and create the configuration

  4. Click Add Agents, select the BDOT Collector you created above, and click Apply

  5. Finally, click Start Rollout, and you're done!

Example Installation

This example uses the Host metrics, OTLP logs and metrics, and file logs.

Bindplane docs - Install BDOT Collector in Docker Compose - image 1

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

Bindplane docs - Install BDOT Collector in Docker Compose - image 2

Ensure that the OPAMP_ENDPOINTenvironment 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.

Bindplane docs - Install BDOT Collector in Docker Compose - image 3

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?