# Chronosphere

### Supported Telemetry Types

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

### Prerequisites

Before configuring the Chronosphere destination, ensure you have:

* A Chronosphere account with tenant access
* Your tenant name (e.g., `mycompany` from `mycompany.chronosphere.io`)
* A service account API token with write permissions for your telemetry types

For help creating a service account and API token, see the [Chronosphere service accounts documentation](https://docs.chronosphere.io/administer/accounts-teams/service-accounts).

### Configuration

#### Basic Configuration

The minimum configuration requires your tenant name and API token.

<figure><img src="https://1405008107-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgmiOMzBfoNFwmKJFHMcJ%2Fuploads%2FbnWWIukwN8JAVK5efmAc%2Fbpss_Chronosphere_basic.png?alt=media&#x26;token=779e00ed-80d6-4403-88d3-9f1580752c92" alt=""><figcaption></figcaption></figure>

| Parameter             | Type                | Default                       | Description                                                                                                             |
| --------------------- | ------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Choose Telemetry Type | `telemetrySelector` | `["Logs","Metrics","Traces"]` | Select which telemetry types to export (Logs, Metrics, Traces).                                                         |
| Tenant Name           | `string`            | `""`                          | Your Chronosphere tenant subdomain (e.g., `mycompany`).                                                                 |
| API Token             | `string`            | `""`                          | Service account API token with write permissions. Sensitive field.                                                      |
| Protocol              | `enum`              | `http`                        | OTLP protocol: `http` (recommended) or `grpc`. For gRPC, collector connects to `<tenant>.chronosphere.io:443` over TLS. |

#### Advanced Configuration

**TLS Configuration**

TLS is enabled by default and required for gRPC protocol.

| Parameter                         | Type     | Default | Description                                                  |
| --------------------------------- | -------- | ------- | ------------------------------------------------------------ |
| Enable TLS                        | `bool`   | `true`  | Enable TLS for secure connections (required for gRPC).       |
| Skip TLS Certificate Verification | `bool`   | `false` | Skip certificate validation (not recommended in production). |
| TLS Certificate Authority File    | `string` | `""`    | Optional CA certificate file for server validation.          |
| Mutual TLS                        | `bool`   | `false` | Enable client TLS authentication.                            |
| TLS Client Certificate File       | `string` | `""`    | Client certificate file for mTLS.                            |
| TLS Client Private Key            | `string` | `""`    | Client private key file for mTLS.                            |

**HTTP Headers and Compression**

| Parameter          | Type   | Default | Description                                                     |
| ------------------ | ------ | ------- | --------------------------------------------------------------- |
| Additional Headers | `map`  | `{}`    | Custom HTTP headers for requests (HTTP protocol only).          |
| Compression        | `enum` | `zstd`  | Compression algorithm for HTTP OTLP: `none`, `gzip`, or `zstd`. |

**Batching Configuration**

Chronosphere recommends specific batch settings to prevent payload size violations.

| Parameter       | Type  | Default | Description                               |
| --------------- | ----- | ------- | ----------------------------------------- |
| Batch Send Size | `int` | `1000`  | Number of items to trigger a batch send.  |
| Batch Max Size  | `int` | `2000`  | Maximum items per batch before splitting. |
| Batch Timeout   | `int` | `1`     | Seconds before sending incomplete batch.  |
| Request Timeout | `int` | `30`    | Seconds to wait for request completion.   |

**Supported Retry and Queuing Settings**

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 |
| ------------- | ---------------- | ---------------- |
| ✓             | ✓                | ✓                |

**Telemetry-Specific Settings**

| Parameter                                           | Type   | Default | Description                                            |
| --------------------------------------------------- | ------ | ------- | ------------------------------------------------------ |
| Metrics Validation Response Verbosity               | `enum` | `SHORT` | Error detail level: `SHORT`, `SUMMARY`, or `DETAILED`. |
| Convert Resource Attributes to Telemetry Attributes | `bool` | `false` | Map resource attributes to telemetry attributes.       |

### Examples

#### gRPC Configuration with mTLS

Use gRPC with mutual TLS for secure, high-performance connections in zero-trust or highly regulated environments. This configuration enables client certificate authentication.

<figure><img src="https://1405008107-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgmiOMzBfoNFwmKJFHMcJ%2Fuploads%2FDlX7HhyXPXKh10mgBk2f%2Fbpss_Chronosphere_mtls.png?alt=media&#x26;token=700fc43f-4d37-4607-ac4f-e727af228795" alt=""><figcaption></figcaption></figure>

#### High-Volume Scenario

For environments sending large volumes of telemetry, increase buffering and processing capacity by configuring larger queue sizes, more concurrent consumers, and persistent queuing for reliability.

<figure><img src="https://1405008107-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgmiOMzBfoNFwmKJFHMcJ%2Fuploads%2FtvDOZHpFaLfIX3SBn8aE%2Fbpss_Chronosphere_high_volume.png?alt=media&#x26;token=2a49771e-6b6e-40d0-95f3-0c591bb4aff0" alt=""><figcaption></figcaption></figure>

### Configuration Tips

#### Protocol Selection and Compression

* **HTTP (recommended)**: Broadly compatible, works through most firewalls and proxies. Use `zstd` compression for best balance.
* **gRPC**: Lower overhead and native binary protocol. Better for high-throughput scenarios but requires direct connectivity to port 443.
* **Compression**: Use `zstd` for most cases; switch to `gzip` or `none` only if CPU usage is a concern.

#### Queue Configuration for Reliability

* **Enable Persistent Queuing** for mission-critical data paths to survive restarts and longer outages.
* **Queue Size**: Start with 5000; increase to 10,000 for high-volume burst scenarios.
* **Number of Consumers**: Use 10-20 for high-volume environments; adjust based on CPU availability.

#### Timeout and Batch Settings

* **Batch Size**: Keep at 1000 items (Chronosphere recommendation) for optimal throughput.
* **Timeout**: Use 30 seconds default; increase to 45-60 seconds for high-latency or intercontinental networks.
* **Batch Timeout**: Set to 1 second for real-time responsiveness with reasonable batching efficiency.

### Troubleshooting

#### Authentication and Connection Issues

**Symptoms**: "401 Unauthorized", "Invalid API Token", or connection timeouts.

Solutions:

1. Verify the API token is correct and has not expired in Chronosphere service accounts.
2. Confirm the token has write permissions for the telemetry types you're sending.
3. Test connectivity to `<tenant>.chronosphere.io:443`: `curl -I https://<tenant>.chronosphere.io/otlp` (for HTTP) or use `telnet <tenant>.chronosphere.io 443` (for gRPC).

#### Metrics Rejection and Validation

**Symptoms**: "Partial success" responses or metrics rejected with validation errors.

Solutions:

1. Set **Metrics Validation Response Verbosity** to `DETAILED` to see full error messages.
2. Check for metrics exceeding Chronosphere limits: payload must be <16 MB compressed; metric items <10,000 per batch.
3. Review Chronosphere's incoming data dashboard for cardinality or formatting issues.

#### Data Not Arriving

**Symptoms**: No data appears in Chronosphere despite successful configuration.

Solutions:

1. Verify telemetry is being generated upstream (check source configuration logs).
2. Confirm the correct telemetry types are enabled in both BindPlane and your sources.
3. Check BindPlane and Chronosphere logs for validation errors or rate limiting.

### Related Resources

* [Chronosphere Documentation](https://docs.chronosphere.io/)
* [Chronosphere OTLP Endpoints](https://docs.chronosphere.io/ingest/metrics-traces/otel)
* [Chronosphere OTLP Logs](https://docs.chronosphere.io/ingest/logs/otel-logs)
* [Chronosphere Service Accounts](https://docs.chronosphere.io/administer/accounts-teams/service-accounts)
* [Retry and Queuing Configuration](https://docs.bindplane.com/configuration/bindplane-otel-collector/retry-and-queueing)
