> For the complete documentation index, see [llms.txt](https://docs.bindplane.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bindplane.com/integrations/destinations/chronosphere.md).

# Chronosphere

Exports logs, metrics, and traces to the Chronosphere Observability Platform using the OpenTelemetry Protocol (OTLP). Telemetry is sent to your tenant's OTLP ingestion endpoint over HTTP or gRPC, authenticated with a service account API token.

### Supported Telemetry

| Metrics | Logs | Traces |
| ------- | ---- | ------ |
| ✓       | ✓    | ✓      |

### Prerequisites

* A Chronosphere tenant. The tenant name is the subdomain of your Chronosphere URL (for `tenant.chronosphere.io`, the tenant name is `tenant`).
* A service account API token with write permissions for the telemetry types you intend to send. See [Service accounts](https://docs.chronosphere.io/administer/accounts-teams/service-accounts).
* The tenant's OTLP ingestion endpoint, reachable over TLS. Bindplane derives the endpoint from the tenant name: `https://<tenant>.chronosphere.io/data/opentelemetry` for HTTP, or `<tenant>.chronosphere.io:443` for gRPC. All requests must be encrypted with TLS. See [Use OpenTelemetry protocol endpoints](https://docs.chronosphere.io/ingest/metrics-traces/otel/otlp-endpoints) and [OTLP logs ingestion](https://docs.chronosphere.io/ingest/logs/otel-logs).

### Configuration

<figure><img src="/files/QVHM9s31sHbhfqFovErQ" alt="Bindplane docs - Chronosphere - image 1"><figcaption></figcaption></figure>

**Basic Configuration**

| Parameter             | Type               | Required | Default               | Description                                                                                                                      |
| --------------------- | ------------------ | -------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Choose Telemetry Type | Telemetry Selector | No       | Logs, Metrics, Traces | Which signals this destination exports.                                                                                          |
| Tenant Name           | String             | Yes      | *(empty)*             | Your tenant name as it appears in the subdomain. For `tenant.chronosphere.io`, enter `tenant`.                                   |
| API Token             | String             | Yes      | *(empty)*             | Service account API token with write permissions for logs, metrics, and traces. Sent as the `api-token` header. Sensitive value. |

**Connectivity (Advanced)**

| Parameter                 | Type                   | Required | Default   | Description                                                                                                                                            |
| ------------------------- | ---------------------- | -------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Protocol                  | Enum: http, grpc       | No       | http      | OTLP protocol to use. HTTP is recommended by Chronosphere for compatibility with all telemetry types. gRPC connects to `<tenant>.chronosphere.io:443`. |
| Compression               | Enum: none, gzip, zstd | No       | zstd      | Compression method for telemetry data. Chronosphere recommends `zstd`. Applied on the HTTP protocol.                                                   |
| Additional Headers        | Map                    | No       | *(empty)* | Extra headers attached to each HTTP request. The `api-token` header is configured automatically.                                                       |
| Request Timeout (seconds) | Integer                | No       | 30        | Time to wait for a request to complete before timing out.                                                                                              |

**Batching (Advanced)**

| Parameter               | Type    | Required | Default | Description                                                                                 |
| ----------------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------- |
| Batch Send Size         | Integer | No       | 1000    | Trigger sending a batch when it reaches this many items.                                    |
| Batch Max Size          | Integer | No       | 2000    | Force a split if a batch exceeds this many items. Metric payloads are limited to 10K items. |
| Batch Timeout (seconds) | Integer | No       | 1       | Send any buffered items after this many seconds.                                            |

**Metrics (Advanced)**

Applies when Metrics is among the selected telemetry types.

| Parameter                                           | Type                           | Required | Default | Description                                                                                                                                                                                                                                                                                                          |
| --------------------------------------------------- | ------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Metrics Validation Response Verbosity               | Enum: SHORT, SUMMARY, DETAILED | No       | SHORT   | Verbosity of error messages for rejected metrics. SHORT reports only the count; SUMMARY adds rejection-reason counts; DETAILED adds a sample of rejected metrics. See [Metrics partial success responses](https://docs.chronosphere.io/ingest/metrics-traces/otel/otlp-endpoints#metrics-partial-success-responses). |
| Convert Resource Attributes to Telemetry Attributes | Boolean                        | No       | false   | When enabled, converts all resource attributes to telemetry attributes.                                                                                                                                                                                                                                              |

**TLS (Advanced)**

| Parameter                         | Type    | Required | Default   | Description                                                                                      |
| --------------------------------- | ------- | -------- | --------- | ------------------------------------------------------------------------------------------------ |
| Enable TLS                        | Boolean | No       | true      | Use TLS for connections. Required by Chronosphere.                                               |
| Skip TLS Certificate Verification | Boolean | No       | false     | Skip TLS certificate verification. Shown when Enable TLS is true. Not recommended in production. |
| TLS Certificate Authority File    | String  | No       | *(empty)* | Optional CA file used to validate the server certificate. Shown when Enable TLS is true.         |
| Mutual TLS                        | Boolean | No       | false     | Use client TLS authentication (mTLS). Shown when Enable TLS is true.                             |
| TLS Client Certificate File       | String  | Yes\*    | *(empty)* | Path to the client certificate for mTLS. Required when Mutual TLS is enabled.                    |
| TLS Client Private Key            | String  | Yes\*    | *(empty)* | Path to the client private key for mTLS. Required when Mutual TLS is enabled.                    |

\* Required only when Enable TLS and Mutual TLS are both true.

**Retry on Failure (Advanced)**

| Parameter               | Type    | Required | Default | Description                                                                                                                         |
| ----------------------- | ------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Enable Retry on Failure | Boolean | No       | true    | Resend telemetry that failed to transmit. Chronosphere recommends enabling this to prevent data loss from transient network errors. |
| Initial Interval        | Integer | No       | 5       | Seconds to wait after the first failure before retrying. Shown when retry is enabled.                                               |
| Max Interval            | Integer | No       | 30      | Upper bound (seconds) on retry backoff. Shown when retry is enabled.                                                                |
| Max Elapsed Time        | Integer | No       | 300     | Maximum time (seconds) spent retrying a batch before giving up. Shown when retry is enabled.                                        |

**Sending Queue (Advanced)**

| Parameter                 | Type      | Required | Default                | Description                                                                                                          |
| ------------------------- | --------- | -------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Enable Sending Queue      | Boolean   | No       | true                   | Buffer telemetry before sending to avoid loss during a temporary network outage.                                     |
| Number of Consumers       | Integer   | No       | 10                     | Consumers that dequeue batches from the sending queue. Shown when the sending queue is enabled.                      |
| Queue Size                | Integer   | No       | 5000                   | Maximum number of batches kept in memory before dropping. Shown when the sending queue is enabled.                   |
| Enable Persistent Queuing | Boolean   | No       | true                   | Buffer telemetry to disk to survive network outages and collector restarts. Shown when the sending queue is enabled. |
| Persistent Queue Storage  | Extension | Yes      | File storage extension | Storage extension used for the persistent queue. Shown when the sending queue and persistent queuing are enabled.    |

### Examples

#### Send all signals over HTTP with zstd compression

This destination exports logs, metrics, and traces to the `acme` tenant over HTTP, using the default `zstd` compression and the default retry and queuing behavior.

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Destination
metadata:
  name: chronosphere
spec:
  type: chronosphere_otlp
  parameters:
    - name: telemetry_types
      value:
        - Logs
        - Metrics
        - Traces
    - name: tenant_name
      value: acme
    - name: api_token
      value: REPLACE_WITH_API_TOKEN
    - name: protocol
      value: http
    - name: compression
      value: zstd
```

### Configuration Tips

* **Protocol and compression**: HTTP is the default and is recommended by Chronosphere for compatibility with all telemetry types. Keep `zstd` compression unless CPU usage is a concern, then fall back to `gzip` or `none`.
* **Rate limiting (HTTP 429)**: Chronosphere applies ingestion rate limits per tenant. When the endpoint is over its limit it returns HTTP 429. Keep Retry on Failure enabled so the collector backs off and resends rather than dropping data; the default backoff (5s initial, 30s max, 300s max elapsed) honors the throttle window. If 429s persist, reduce throughput with larger Batch Timeout values or fewer sending-queue consumers, and contact Chronosphere to review the tenant limit rather than raising consumers, which makes throttling worse.
* **Reliability**: Keep the sending queue and persistent queuing enabled for mission-critical paths so buffered data survives collector restarts. Raise Queue Size for bursty, high-volume environments.

### Troubleshooting

#### Validate the configuration after applying

Symptoms: unsure whether telemetry is reaching the tenant after saving the destination.

Solutions:

1. Confirm the Tenant Name is the subdomain only (`acme`), not the full URL.
2. From the collector host, verify the endpoint resolves and accepts TLS: `curl -I https://<tenant>.chronosphere.io/data/opentelemetry` for HTTP, or `openssl s_client -connect <tenant>.chronosphere.io:443` for gRPC.
3. After a few minutes, confirm data appears in Chronosphere's incoming-data views. For metrics, set Metrics Validation Response Verbosity to SUMMARY or DETAILED to surface rejection reasons in the collector logs.

#### Authentication or permission denied

Symptoms: `401 Unauthorized`, "invalid API token", or all data is rejected.

Solutions:

1. Verify the API Token is current and belongs to a service account with write permissions for the signals you are sending.
2. Confirm the `api-token` header is not being overridden by an entry in Additional Headers.

#### Throttling (HTTP 429) or dropped data

Symptoms: `429 Too Many Requests` in collector logs, or gaps in Chronosphere despite a healthy collector.

Solutions:

1. Keep Retry on Failure enabled so the collector backs off and resends on 429 instead of dropping batches.
2. Lower sustained throughput: increase Batch Timeout, or reduce Number of Consumers. Raising consumers increases pressure and worsens throttling.
3. Keep the sending queue (and persistent queuing) enabled so data is buffered during throttle windows instead of lost; raise Queue Size for bursty workloads.
4. For metrics, note that a partial-success response is not an error and must not be retried. Use the validation response verbosity to identify rejected series.

### Standalone Destination

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Destination
metadata:
  name: chronosphere
spec:
  type: chronosphere_otlp
  parameters:
    - name: telemetry_types
      value:
        - Logs
        - Metrics
        - Traces
    - name: tenant_name
      value: acme
    - name: api_token
      value: REPLACE_WITH_API_TOKEN
```

### Related Resources

* [OTLP Exporter (otlpexporter) reference](https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/otlpexporter/README.md)
* [OTLP HTTP Exporter (otlphttpexporter) reference](https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/otlphttpexporter/README.md)
* [Chronosphere: Use OpenTelemetry protocol endpoints](https://docs.chronosphere.io/ingest/metrics-traces/otel/otlp-endpoints)
* [Chronosphere: OTLP logs ingestion](https://docs.chronosphere.io/ingest/logs/otel-logs)
* [Chronosphere: Service accounts](https://docs.chronosphere.io/administer/accounts-teams/service-accounts)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.bindplane.com/integrations/destinations/chronosphere.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
