# Connect OpenTelemetry Collectors Using the OpAMP Extension

Bindplane works best with the [Bindplane Collector](https://github.com/observIQ/bindplane-otel-collector) which is built using [OpenTelemetry Collector Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib). However, other OpenTelemetry based collectors can be added to the Bindplane using the [OpenTelemetry OpAMP Extension](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/opampextension).

Alternatively, check out Bindplane's [Bring Your Own Collector (BYOC) feature](/feature-guides/deployment-and-management/bring-your-own-collector.md) for using your own distribution of the OpenTelemetry Collector. This feature allows Bindplane to fully manage your collector. The approached detailed here will allow a collector to connect to Bindplane, but further management (such as remote configuration) is not possible.

### Prerequisites

Using other OpenTelemetry Collector distributions with Bindplane is an enterprise feature. Ensure you are using an enterprise license before continuing.

For an OpenTelemetry Collector to be added to Bindplane, you will need to do the following:

* Include the [OpenTelemetry OpAMP Extension](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/opampextension) in your collector build.

### Configuration

To configure the OpAMP Extension to connect to Bindplane, you will need to add the following to your OpenTelemetry collector configuration:

```yaml
extensions:
  opamp:
    instance_uid: [1. collector ULID]
    capabilities:
      reports_effective_config: true
    server:
      ws:
        endpoint: [2. opamp endpoint]
        headers:
          Authorization: Secret-Key [3. secret key]
          X-Bindplane-Labels: [4. labels]
        tls:
          insecure: true [5. see below]
service:
  extensions: [opamp]
```

1. The OpAMP spec requires that the instance\_uid field be a valid ULID. This field is used to uniquely identify the collector instance. You can generate a ULID using a [ULID generator](https://ulidgenerator.com).
2. The OpAMP endpoint is the websocket address of your Bindplane server. It should start with either `ws://` for plain text or `wss://` for TLS. You can find the endpoint in the Bindplane UI by navigating to the "Collectors" page, clicking "Install Collector", choosing a Platform, and then looking at the generated command. The endpoint will appear after the `-e` flag.
3. The secret key is used to authenticate the collector with Bindplane. As with the endpoint, you can find the secret key in the Bindplane UI by navigating to the "Collectors" page, clicking "Install Collector", choosing a Platform, and then looking at the generated command. The secret key will appear after the `-s` flag.
4. The labels field is used to add metadata to the collector. This field is optional, but it can be used to add help identify the collector in the the Bindplane UI. The labels should be a comma-separated list of key-value pairs, where the key and value are separated by an equals sign. For example, `environment=production,region=us-west`.
5. When using `ws://`, currently the tls insecure option is required. Other tls settings may be used when using `wss://`.

### Limitations

The OpenTelemetry OpAMP Extension has the following limitations:

* The OpAMP Extension does not accept remote configuration, so the Collector configuration cannot be modified using the Bindplane UI. The current Collector configuration will be visible on the Collector page as yaml. The "Choose Another Configuration" button will not appear.
* The View Recent Telemetry button will not appear because this feature is specific to the [Bindplane Collector](https://github.com/observIQ/bindplane-otel-collector).
* The `Operating System` and `MAC Address` fields will not be populated in the Bindplane UI. These\
  fields are only populated by the [Bindplane Collector](https://github.com/observIQ/bindplane-otel-collector).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bindplane.com/how-to-guides/collector-management/bring-your-own-collector/connecting-other-opentelemetry-collectors-using-the-opamp-extension.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
