RousselTMLEARNING

Article · Bindplane: OpenTelemetry telemetry pipelines from discovery to expertise

Installing Bindplane

1. The server #

Three ways to install it.

Options #

Bindplane installation steps
ModeUsageNotes
Docker ComposeTesting, training, small environmentsServer, PostgreSQL, Prometheus and transform agent as containers
Virtual machine (Linux package)Simple productionsystemd service, external PostgreSQL
Kubernetes (Helm)Production, high availabilitySeveral servers, managed PostgreSQL and event bus
Bindplane CloudNot hosting the serverCollectors connect to wss://app.bindplane.com/v1/opamp
Good to know: The server requires a license (BINDPLANE_LICENSE variable), including for the free edition: create an account on the Bindplane website and get the key from the download page.

Docker Compose #

services:
  bindplane:
    image: ghcr.io/observiq/bindplane-ee:1.89.5
    ports: ["3001:3001"]
    environment:
      BINDPLANE_LICENSE: ${BINDPLANE_LICENSE}
      BINDPLANE_USERNAME: admin
      BINDPLANE_PASSWORD: ${BINDPLANE_PASSWORD}
      BINDPLANE_REMOTE_URL: http://localhost:3001
      BINDPLANE_SESSION_SECRET: ${BINDPLANE_SESSION_SECRET}
      BINDPLANE_LOG_OUTPUT: stdout
      BINDPLANE_ACCEPT_EULA: "true"
      BINDPLANE_PROMETHEUS_ENABLE: "true"
      BINDPLANE_PROMETHEUS_ENABLE_REMOTE: "true"
      BINDPLANE_PROMETHEUS_HOST: prometheus
      BINDPLANE_PROMETHEUS_PORT: "9090"
      BINDPLANE_TRANSFORM_AGENT_ENABLE_REMOTE: "true"
      BINDPLANE_TRANSFORM_AGENT_REMOTE_AGENTS: transform:4568
      BINDPLANE_STORE_TYPE: postgres
      BINDPLANE_POSTGRES_HOST: postgres
      BINDPLANE_POSTGRES_PORT: "5432"
      BINDPLANE_POSTGRES_DATABASE: bindplane
      BINDPLANE_POSTGRES_USERNAME: bindplane
      BINDPLANE_POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    depends_on: [postgres, prometheus, transform]
  postgres:
    image: postgres:16
    environment: { POSTGRES_DB: bindplane, POSTGRES_USER: bindplane, POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" }
    volumes: ["bindplane:/var/lib/postgresql/data"]
  prometheus:
    image: ghcr.io/observiq/bindplane-prometheus:1.89.5
    volumes: ["prometheus:/prometheus"]
  transform:
    image: ghcr.io/observiq/bindplane-transform-agent:1.89.5-bindplane
volumes: { bindplane: {}, prometheus: {} }
cat > .env <<EOF
BINDPLANE_LICENSE=<votre clé>
BINDPLANE_PASSWORD=$(openssl rand -hex 12)
BINDPLANE_SESSION_SECRET=$(uuidgen)
POSTGRES_PASSWORD=$(openssl rand -hex 12)
EOF
docker compose up -d && docker compose logs -f bindplane
Common mistake: $(uuidgen) written directly in the Compose file is not evaluated: generate the secrets in the .env file as above. Also change the examples' default admin password.

The transform agent is used by the interface to preview the effect of processors; Prometheus stores throughput measurements. Use the latest published version of the images, keeping the same one for the three observiq images.

2. BDOT collectors #

Linux, Docker, Kubernetes.

Connection #

In the interface, Collectors > Install Collectors generates the installation command for the chosen platform, with two key parameters:

ParameterRole
OPAMP_ENDPOINTServer OpAMP address: ws://<server>:3001/v1/opamp (or wss:// with TLS)
OPAMP_SECRET_KEYSecret key that authorizes the collector to connect
OPAMP_LABELSCollector labels (env=prod,team=web): used to target fleets and rollout stages

Docker #

docker run -d --name bdot \
  -e OPAMP_ENDPOINT=ws://bindplane:3001/v1/opamp \
  -e OPAMP_SECRET_KEY=<clé> \
  -e OPAMP_LABELS=env=lab,team=web \
  -e MANAGER_YAML_PATH=/etc/otel/storage/manager.yaml \
  -v bdot-storage:/etc/otel/storage \
  -p 4317:4317 -p 4318:4318 \
  ghcr.io/observiq/bindplane-agent:1.84.0

Kubernetes #

Create a Kubernetes platform configuration, then Install Collectors provides a manifest to apply. Three modes: Kubernetes Node (DaemonSet, one collector per node, for node logs and metrics), Kubernetes Cluster (one-pod Deployment, for cluster events and metrics) and Kubernetes Gateway (scalable Deployment or StatefulSet).

kubectl apply -f bindplane-node-collector.yaml
kubectl -n bindplane-agent get pod
Good to know: Collectors are deployed in the bindplane-agent namespace. If the server runs in the same cluster, OPAMP_ENDPOINT can target the service: ws://bindplane.default.svc.cluster.local:3001/v1/opamp.

3. The CLI #

Everything the interface does, from the command line.

Essential commands #

bindplane profile set lab --remote-url http://localhost:3001 --username admin --password "$BINDPLANE_PASSWORD"
bindplane profile use lab

bindplane get agents                         # collecteurs connectés
bindplane get configurations
bindplane get configuration web-logs --export --output yaml > web-logs.yaml
bindplane apply -f web-logs.yaml             # créer ou mettre à jour
bindplane rollout start web-logs             # déployer la nouvelle version
bindplane rollout status web-logs
Good practice: Export configurations created in the interface and version them in Git: bindplane apply in a CI recreates them identically on another server (staging, production).
Good to know: Profile connection options may vary between versions: bindplane profile set --help lists them.

📄 Installing Bindplane: server, BDOT Collector and OpAMP connection →

My progress

  • ⏱ Estimated time : ≈ 10 min

Sign in to track your progress and take notes. Sign in

💬 Questions about this lesson

No questions yet: be the first to ask for help or share your configuration.

Ask a question about this lesson →

Recommended Articles

Bindplane: managing your OpenTelemetry telemetry pipelines

Understand Bindplane: a control plane for OpenTelemetry collectors via OpAMP, BDOT Collector, con...

OpenTelemetry Collector, Grafana Alloy and Bindplane: comparing three approaches to telemetry pipelines

Detailed comparison of three ways to manage telemetry pipelines: the OpenTelemetry Collector in Y...

Bindplane in production: high availability, security, Kubernetes and configuration as code

Operate Bindplane in production: active-active servers, PostgreSQL and event bus, TLS for OpAMP, ...

Bindplane at scale: fleets, gateways and rollouts

Manage hundreds of collectors with Bindplane: edge fleets, gateways, labels, standard and progres...

Bindplane best practices

Checklist for operating Bindplane: organizing by labels and fleets, measured reduction, masking a...

Reducing, masking and routing telemetry with Bindplane

Reduce ingestion costs with Bindplane: severity filters, deduplication, sampling, field removal, ...

Bindplane configurations: sources, processors, destinations and versions

Build Bindplane configurations: sources, processors and destinations, the pipeline editor, snapsh...

Installing Phoenix and tracing your first LLM application

Install Arize Phoenix (pip, Docker), send your first OpenInference traces from an OpenAI applicat...

Installing Fleet Server and enrolling Elastic Agents

Set up Fleet Server, create a policy, enroll Linux, Windows and Docker agents, understand tokens ...

Support us

♥ SUPPORT US

Support RousselTM Learning

Courses, articles, labs and certificates stay free with no intrusive ads. A voluntary contribution, of any amount you choose, pays for hosting, lab environments and new content.

Contribute with PayPal Any amount · card or PayPal accountLearn more
QR code PayPal
Or scan this QR code with your phone

Thank you, every contribution counts!