> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diffblue.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Telemetry export

> Forward Diffblue Agents telemetry to your own OpenTelemetry-compatible collector

Diffblue Agents emits structured telemetry events throughout workflow execution. Events are stored locally at `~/.diffblue/agents/telemetry/events-*.jsonl`. To send them to an external observability platform, configure one or more OTLP-compatible collectors such as Grafana, Datadog, or Honeycomb.

## Configure an OTLP endpoint

Add one or more OTLP endpoints to `~/.diffblue/agents/config.properties`. Each endpoint is identified by a numeric prefix (1 to 99).

```properties theme={null}
otel.exporter.otlp.1.endpoint=https://otlp.example.com:4318/v1/logs
otel.exporter.otlp.1.timeout=30s
otel.exporter.otlp.1.headers=Authorization=Bearer <your-token>
```

| Property                          | Description                                       |
| --------------------------------- | ------------------------------------------------- |
| `otel.exporter.otlp.<n>.endpoint` | OTLP HTTP endpoint URL (required)                 |
| `otel.exporter.otlp.<n>.timeout`  | Request timeout (default: `30s`)                  |
| `otel.exporter.otlp.<n>.headers`  | HTTP headers as comma-separated `key=value` pairs |

Replace `<n>` with a number from 1 to 99.

### Multiple endpoints

```properties theme={null}
# Primary collector
otel.exporter.otlp.1.endpoint=https://otlp.example.com:4318/v1/logs
otel.exporter.otlp.1.headers=Authorization=Bearer <primary-token>

# Secondary collector
otel.exporter.otlp.2.endpoint=https://backup-otlp.example.com:4318/v1/logs
otel.exporter.otlp.2.headers=Authorization=Bearer <secondary-token>
```

### Provider examples

<Tabs>
  <Tab title="Grafana Cloud">
    ```properties theme={null}
    otel.exporter.otlp.1.endpoint=https://otlp-gateway-prod-gb-south-1.grafana.net/otlp/v1/logs
    otel.exporter.otlp.1.headers=Authorization=Basic <base64-encoded-instance-id:token>
    ```
  </Tab>

  <Tab title="Datadog">
    ```properties theme={null}
    otel.exporter.otlp.1.endpoint=https://http-intake.logs.datadoghq.com/api/v2/logs
    otel.exporter.otlp.1.headers=DD-API-KEY=<your-api-key>
    ```
  </Tab>

  <Tab title="Honeycomb">
    ```properties theme={null}
    otel.exporter.otlp.1.endpoint=https://api.honeycomb.io/v1/logs
    otel.exporter.otlp.1.headers=x-honeycomb-team=<your-api-key>
    ```
  </Tab>
</Tabs>

<Note>
  Refer to your provider's documentation for the exact endpoint URL and authentication header format. These may vary by region or account.
</Note>

## Error handling

Invalid endpoint configurations are skipped without affecting workflow execution. Diffblue Agents logs a warning to stderr for:

* Malformed endpoint URLs
* Invalid timeout values (the default of 30 seconds is used instead)
* Malformed header key-value pairs

If an endpoint is unreachable at runtime, events are dropped for that endpoint. Other configured endpoints and the workflow itself are not affected.
