# dynatrace/dynatrace-bindplane-otel-collector architecture

> Architecture diagram of the GitHub repository dynatrace/dynatrace-bindplane-otel-collector, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dynatrace/dynatrace-bindplane-otel-collector
- Repository: https://github.com/dynatrace/dynatrace-bindplane-otel-collector

## Overview

DBDOT Collector is an OpenTelemetry Collector distribution managed through Bindplane using OpAMP, with standalone and managed operating modes. Its principal workflow is configuration and startup of the collector, followed in managed deployments by remote management; snapshot processing can expose telemetry snapshots through OpAMP. A separate updater workflow locates the installation, applies new artifacts and service configuration, and supports rollback. Source excerpts and the index establish selected links, but runtime wiring and several extension internals were not sampled, so uncertain connections are omitted.

Main entry points: [`updater/internal/updater/updater.go`](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/updater/updater.go) (Update Orchestrator), [`updater/internal/install/install.go`](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/install/install.go) (Installer), [`internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_client.go`](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_client.go) (Bindplane Client), [`updater/internal/service`](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/service) (Service Manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collector["Collector Runtime"]
  node_collector_cli["Collector CLI<br/>[main.go]"]
  node_runtime["Runtime"]
  node_collector_core["Collector Core"]
  node_service_runtime["Service Runtime"]
end

subgraph group_management["OpAMP Management"]
  node_opamp_extension["OpAMP Extension<br/>[extension.go]"]
  node_opamp_client["OpAMP Client<br/>[client.go]"]
  node_bindplane_client["Bindplane Client"]
  node_agent_config["Agent Config Manager"]
  node_download_manager["Download Manager"]
  node_package_state["Package State"]
end

subgraph group_telemetry["Telemetry Reporting"]
  node_snapshot_processor["Snapshot Processor<br/>[processor.go]"]
  node_reporting["Report Clients"]
end

subgraph group_updater["Update Lifecycle"]
  node_updater_cli["Updater CLI<br/>[main.go]"]
  node_updater_core["Update Orchestrator<br/>[updater.go]"]
  node_installer["Installer<br/>[install.go]"]
  node_service_manager["Service Manager"]
  node_rollback["Rollback<br/>[rollback.go]"]
  node_update_actions["Update Actions"]
  node_collector_monitor["Collector Monitor<br/>[monitor.go]"]
  node_install_paths["Install Paths"]
  node_artifact_files["Artifact Files<br/>[file.go]"]
end

node_operator(("Operator"))
node_bindplane(("Bindplane"))

node_operator -->|"configures and starts"| node_collector_cli
node_collector_cli -->|"runs"| node_runtime
node_operator -->|"manages remotely"| node_bindplane
node_bindplane -->|"manages via OpAMP"| node_opamp_extension
node_opamp_extension -.->|"coordinates management"| node_bindplane_client
node_bindplane_client -.->|"manages configuration"| node_agent_config
node_bindplane_client -.->|"fetches artifacts"| node_download_manager
node_snapshot_processor -->|"uses reporting"| node_reporting
node_updater_cli -->|"locates installation"| node_install_paths
node_updater_cli -->|"creates and runs"| node_updater_core
node_updater_core -->|"installs artifacts"| node_installer
node_updater_core -->|"manages service"| node_service_manager
node_updater_core -->|"coordinates rollback"| node_rollback
node_updater_core -->|"monitors collector"| node_collector_monitor
node_updater_core -->|"reads package state"| node_package_state
node_installer -->|"copies artifacts"| node_artifact_files
node_installer -->|"starts service"| node_service_manager
node_installer -->|"records actions"| node_update_actions
node_installer -->|"registers rollback actions"| node_rollback
node_update_actions -->|"restores service state"| node_service_manager

click node_collector_cli "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/cmd/main/main.go"
click node_runtime "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/extension/opampconnectionextension/runtime"
click node_collector_core "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/extension/opampconnectionextension/internal/collector"
click node_service_runtime "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/extension/opampconnectionextension/internal/service"
click node_opamp_extension "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/extension.go"
click node_opamp_client "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/client.go"
click node_bindplane_client "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_client.go"
click node_agent_config "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/agent_config_manager.go"
click node_download_manager "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_downloadable_file_manager.go"
click node_package_state "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/packagestate/packages_state_manager.go"
click node_snapshot_processor "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/processor/snapshotprocessor/processor.go"
click node_reporting "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/report"
click node_updater_cli "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/cmd/updater/main.go"
click node_updater_core "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/updater/updater.go"
click node_installer "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/install/install.go"
click node_service_manager "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/service"
click node_rollback "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/rollback/rollback.go"
click node_update_actions "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/action"
click node_collector_monitor "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/state/monitor.go"
click node_install_paths "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/path"
click node_artifact_files "https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/file/file.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_collector_cli,node_runtime,node_collector_core,node_service_runtime toneBlue
class node_opamp_extension,node_opamp_client,node_bindplane_client,node_agent_config,node_download_manager,node_package_state toneAmber
class node_snapshot_processor,node_reporting toneMint
class node_updater_cli,node_updater_core,node_installer,node_service_manager,node_rollback,node_update_actions,node_collector_monitor,node_install_paths,node_artifact_files toneRose
class node_operator,node_bindplane toneIndigo
```

## Components

### Collector Runtime

- [Collector CLI](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/cmd/main/main.go): `internal/extension/opampconnectionextension/cmd/main/main.go`
- [Runtime](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/extension/opampconnectionextension/runtime): `internal/extension/opampconnectionextension/runtime`
- [Collector Core](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/extension/opampconnectionextension/internal/collector): `internal/extension/opampconnectionextension/internal/collector`
- [Service Runtime](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/extension/opampconnectionextension/internal/service): `internal/extension/opampconnectionextension/internal/service`

### OpAMP Management

- [OpAMP Extension](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/extension.go): `internal/extension/opampconnectionextension/extension.go`
- [OpAMP Client](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/client.go): `internal/extension/opampconnectionextension/internal/opamp/client.go`
- [Bindplane Client](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_client.go): `internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_client.go`
- [Agent Config Manager](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/agent_config_manager.go): `internal/extension/opampconnectionextension/internal/opamp/bindplane/agent_config_manager.go`
- [Download Manager](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_downloadable_file_manager.go): `internal/extension/opampconnectionextension/internal/opamp/bindplane/bindplane_downloadable_file_manager.go`
- [Package State](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/extension/opampconnectionextension/packagestate/packages_state_manager.go): `internal/extension/opampconnectionextension/packagestate/packages_state_manager.go`

### Telemetry Reporting

- [Snapshot Processor](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/internal/processor/snapshotprocessor/processor.go): `internal/processor/snapshotprocessor/processor.go`
- [Report Clients](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/internal/report): `internal/report`

### Update Lifecycle

- [Updater CLI](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/cmd/updater/main.go): `updater/cmd/updater/main.go`
- [Update Orchestrator](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/updater/updater.go): `updater/internal/updater/updater.go`
- [Installer](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/install/install.go): `updater/internal/install/install.go`
- [Service Manager](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/service): `updater/internal/service`
- [Rollback](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/rollback/rollback.go): `updater/internal/rollback/rollback.go`
- [Update Actions](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/action): `updater/internal/action`
- [Collector Monitor](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/state/monitor.go): `updater/internal/state/monitor.go`
- [Install Paths](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/tree/main/updater/internal/path): `updater/internal/path`
- [Artifact Files](https://github.com/dynatrace/dynatrace-bindplane-otel-collector/blob/main/updater/internal/file/file.go): `updater/internal/file/file.go`

### Other components

- **Operator**
- **Bindplane**

## Connections

- Operator → Collector CLI: configures and starts (evidence: `internal/extension/opampconnectionextension/cmd/main/main.go`)
- Collector CLI → Runtime: runs (evidence: `internal/extension/opampconnectionextension/cmd/main/main.go`)
- Operator → Bindplane: manages remotely (evidence: `README.md`)
- Bindplane → OpAMP Extension: manages via OpAMP (evidence: `README.md`)
- OpAMP Extension → Bindplane Client: coordinates management
- Bindplane Client → Agent Config Manager: manages configuration
- Bindplane Client → Download Manager: fetches artifacts
- Snapshot Processor → Report Clients: uses reporting (evidence: `internal/processor/snapshotprocessor/processor.go`)
- Updater CLI → Install Paths: locates installation (evidence: `updater/cmd/updater/main.go`)
- Updater CLI → Update Orchestrator: creates and runs (evidence: `updater/cmd/updater/main.go`)
- Update Orchestrator → Installer: installs artifacts (evidence: `updater/internal/updater/updater.go`)
- Update Orchestrator → Service Manager: manages service (evidence: `updater/internal/updater/updater.go`)
- Update Orchestrator → Rollback: coordinates rollback (evidence: `updater/internal/updater/updater.go`)
- Update Orchestrator → Collector Monitor: monitors collector (evidence: `updater/internal/updater/updater.go`)
- Update Orchestrator → Package State: reads package state (evidence: `updater/internal/updater/updater.go`)
- Installer → Artifact Files: copies artifacts (evidence: `updater/internal/install/install.go`)
- Installer → Service Manager: starts service (evidence: `updater/internal/install/install.go`)
- Installer → Update Actions: records actions (evidence: `updater/internal/install/install.go`)
- Installer → Rollback: registers rollback actions (evidence: `updater/internal/install/install.go`)
- Update Actions → Service Manager: restores service state (evidence: `updater/internal/action/service_action.go`)
