# Honeycomb.io

### Description

Sends logs, metrics, and traces to Honeycomb.io using the OTLP exporter.

### Prerequisites

A Honeycomb.io account, team, environment, and API key will need to be created before being able to send telemetry with this destination. See this [Honeycomb quick start guide](https://docs.honeycomb.io/get-started/start-building/application/traces/) for more information.\
With a Honeycomb environment and API key setup, you can configure this destination to send to Honeycomb. Note that the API key will need the "Send Events" permission. If configuring this destination with a dataset that does not exist, the API key will also need the "Create Dataset" permission to work properly.

### Supported Types

| Logs | Metrics | Traces | Bindplane Collector |
| ---- | ------- | ------ | ------------------- |
| ✓    | ✓       | ✓      | `v1.36.0`+          |

### Configuration

<table><thead><tr><th width="214.63671875">Field</th><th>Description</th></tr></thead><tbody><tr><td>Choose Telemetry Type</td><td>The kind of telemetry that should be sent to Honeycomb.</td></tr><tr><td>API Key</td><td>The API key to use for sending telemetry to Honeycomb. Make sure the key has the "Send Events" permission. If the provided dataset(s) do not exist, use the "Create Dataset" permission as well. See this <a href="https://docs.honeycomb.io/configure/environments/manage-api-keys/">Honeycomb documentation</a> for more.</td></tr><tr><td>Metrics Dataset</td><td>Honeycomb dataset that metrics will be sent to. Will be created if it does not exist. See this <a href="https://docs.honeycomb.io/send-data/opentelemetry/collector/#metrics-and-logs-signals">Honeycomb documentation</a> for more.</td></tr><tr><td>Logs Dataset</td><td>Honeycomb dataset that logs will be sent to. Will be created if it does not exist. If not set, the "service.name" log resource attribute will be used. See this <a href="https://docs.honeycomb.io/send-data/opentelemetry/collector/#metrics-and-logs-signals">Honeycomb documentation</a> for more.</td></tr><tr><td>Protocol</td><td>The OTLP protocol to use when sending to Honeycomb can be HTTP or gRPC. See the <a href="https://docs.honeycomb.io/send-data/opentelemetry/collector/#choosing-between-grpc-and-http">Honeycomb documentation</a> for more.</td></tr><tr><td>Compression</td><td>Compression algorithm to use when sending data to Honeycomb. Available options are <code>none</code> or <code>gzip</code>.</td></tr><tr><td>Additional Headers</td><td>Add additional headers to be attached to requests.</td></tr></tbody></table>

This destination supports the [retry settings](https://docs.bindplane.com/configuration/bindplane-otel-collector/retry-on-failure), the [sending queue settings](https://docs.bindplane.com/configuration/bindplane-otel-collector/sending-queue), and the [persistent queue settings.](https://docs.bindplane.com/configuration/bindplane-otel-collector/persistent-queue)

| Sending Queue | Persistent Queue | Retry on Failure |
| ------------- | ---------------- | ---------------- |
| ✓             | ✓                | ✓                |

### Honeycomb Datasets

The Honeycomb destination can be configured to route telemetry to specific Honeycomb datasets, however, Refinery will respect the `service.name` resource field when determining which dataset the telemetry should belong to.

You can route telemetry to datasets dynamically by using the [Add Fields](https://docs.bindplane.com/integrations/processors/add-fields) processor to set `service.name` resource field.

### Example Configuration

For this configuration we'll configure to send logs, metrics, and traces. We specify an API key, Metrics Dataset, and Logs Dataset. In the `Advanced` section we specify gRPC protocol and gzip compression. We'll also enable Retry on Failure, Sending Queue, and Persistent Queueing.

**Web Interface**

<figure><img src="https://1405008107-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgmiOMzBfoNFwmKJFHMcJ%2Fuploads%2Fgit-blob-91ac504eb1e71d86033a7ede8e557771ad462e06%2Fintegrations-destinations-honeycomb-io-image-1.png?alt=media" alt="Bindplane docs - Honeycomb.io - image 1"><figcaption></figcaption></figure>

<figure><img src="https://1405008107-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgmiOMzBfoNFwmKJFHMcJ%2Fuploads%2Fgit-blob-2b5ec06eb98cfe8e1b5eb1d8390f2bd6fdbb6787%2Fintegrations-destinations-honeycomb-io-image-2.png?alt=media" alt="Bindplane docs - Honeycomb.io - image 2"><figcaption></figcaption></figure>

<figure><img src="https://1405008107-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgmiOMzBfoNFwmKJFHMcJ%2Fuploads%2Fgit-blob-4a50e51b6ef84b18971644052a5d0300d0fecdd1%2Fintegrations-destinations-honeycomb-io-image-3.png?alt=media" alt="Bindplane docs - Honeycomb.io - image 3"><figcaption></figcaption></figure>

**Standalone Destination**

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Destination
metadata:
  id: honeycomb
  name: honeycomb
spec:
  type: honeycomb
  parameters:
    - name: telemetry_types
      value: ['Logs', 'Metrics', 'Traces']
    - name: api_key
      value: 'some_api_key'
    - name: metrics_dataset
      value: 'bindplane_metrics'
    - name: logs_dataset
      value: 'bindplane_logs'
    - name: protocol
      value: 'grpc'
    - name: compression
      value: 'gzip'
    - name: retry_on_failure_enabled
      value: true
    - name: sending_queue_enabled
      value: true
    - name: persistent_queue_enabled
      value: true
    - name: persistent_queue_storage_extension
      value: 
        type: file_storage_persistent_queue
        parameters:
          - name: persistent_queue_directory
            value: ${OIQ_OTEL_COLLECTOR_HOME}/storage
          - name: timeout
            value: 1
          - name: persistent_queue_fsync
            value: true
```
