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.My progress
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.
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 ...