1. The server #
Three ways to install it.
Options #
| Mode | Usage | Notes |
|---|---|---|
| Docker Compose | Testing, training, small environments | Server, PostgreSQL, Prometheus and transform agent as containers |
| Virtual machine (Linux package) | Simple production | systemd service, external PostgreSQL |
| Kubernetes (Helm) | Production, high availability | Several servers, managed PostgreSQL and event bus |
| Bindplane Cloud | Not hosting the server | Collectors 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 bindplaneCommon mistake:$(uuidgen)written directly in the Compose file is not evaluated: generate the secrets in the.envfile as above. Also change the examples' defaultadminpassword.
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:
| Parameter | Role |
|---|---|
OPAMP_ENDPOINT | Server OpAMP address: ws://<server>:3001/v1/opamp (or wss:// with TLS) |
OPAMP_SECRET_KEY | Secret key that authorizes the collector to connect |
OPAMP_LABELS | Collector 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.0Kubernetes #
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 podGood to know: Collectors are deployed in thebindplane-agentnamespace. If the server runs in the same cluster,OPAMP_ENDPOINTcan 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-logsGood 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.