This is an implementation of an OpAMP Supervisor that runs a Collector instance using configuration provided from an OpAMP server. This implementation is following a design specified here. The design is still undergoing changes, and as such this implementation may change as well.
The supervisor is currently undergoing heavy development and is not ready for any serious use. However, if you would like to test it, you can follow the steps below:
-
Download the opamp-go repository, and run the OpAMP example server in the
internal/examples/server
directory.git clone git@github.com:open-telemetry/opamp-go.git cd opamp-go/internal/examples/server go run .
Visit localhost:4321 to verify that the server is running.
-
From the Collector contrib repository root, build the Collector:
make otelcontribcol
-
Run the supervisor in the
cmd/opampsupervisor
directory of Collector contrib repository, substituting<OS>
for your operating system (darwin
for MacOS,linux
orwindows
):cd cmd/opampsupervisor go run . --config examples/supervisor_<OS>.yaml
-
The supervisor should connect to the OpAMP server and start a Collector instance.
The supervisor persists some data to disk in order to mantain state between restarts. The directory where this data is stored may be specified via the supervisor configuration:
storage:
directory: "/path/to/storage/dir"
By default, the supervisor will use /var/lib/otelcol/supervisor
on posix systems, and %ProgramData%/Otelcol/Supervisor
on Windows.
This directory will be created on supervisor startup if it does not exist.
The OpenTelemetry OpAMP Supervisor is intended to be the reference implementation of an OpAMP Supervisor, and as such will support all OpAMP capabilities. Additionally, it follows a design document for the features it intends to support.
For a list of open issues related to the Supervisor, see these issues.
Key:
✅: Fully implemented
📅: Planned, but no issue to track implementation
OpAMP capability | Status |
---|---|
AcceptsRemoteConfig | ✅ |
ReportsEffectiveConfig | |
AcceptsPackages | open-telemetry#34734 |
ReportsPackageStatuses | 📅 |
ReportsOwnTraces | 📅 |
ReportsOwnMetrics | |
ReportsOwnLogs | 📅 |
AcceptsOpAMPConnectionSettings | open-telemetry#21043 |
AcceptsOtherConnectionSettings | open-telemetry#21043 |
AcceptsRestartCommand | open-telemetry#21077 |
ReportsHealth | |
ReportsRemoteConfig | open-telemetry#21079 |
Feature | Status |
---|---|
Offers Supervisor configuration including configuring capabilities | ✅ |
Starts and stops a Collector using remote configuration | |
Communicates with OpAMP extension running in the Collector | open-telemetry#21071 |
Updates the Collector binary | 📅 |
Configures the Collector to report it's own metrics over OTLP | 📅 |
Configures the Collector to report it's own logs over OTLP | 📅 |
Sanitization or restriction of Collector config | open-telemetry#24310 |