# Observability > Dash0

# Dash0

Artillery integrates with [Dash0](https://www.dash0.com) using OpenTelemetry protocol to send both metrics and traces.

## Quick Start

```yaml
plugins:
  publish-metrics:
    - type: 'open-telemetry'
      serviceName: 'my-service'
      metrics:
        endpoint: https://ingress.eu-west-1.aws.dash0.com/v1/metrics
        headers:
          Authorization: 'Bearer {{ $env.DASH0_AUTH_TOKEN }}'
```

## Requirements

* A Dash0 account and an [auth token](https://www.dash0.com/documentation/dash0/key-concepts/auth-tokens)

## Configuration

### Full Configuration Example

```yaml
plugins:
  publish-metrics:
    - type: 'open-telemetry'
      serviceName: 'load-test-service'
      metrics:
        exporter: 'otlp-http'
        endpoint: https://ingress.eu-west-1.aws.dash0.com/v1/metrics
        headers:
          Authorization: 'Bearer {{ $env.DASH0_AUTH_TOKEN }}'
      traces:
        exporter: 'otlp-http'
        endpoint: https://ingress.eu-west-1.aws.dash0.com/v1/traces
        headers:
          Authorization: 'Bearer {{ $env.DASH0_AUTH_TOKEN }}'
```

### Regional Endpoints

You may need to adjust the `endpoint` URL to match the region where your Dash0 account is hosted. Common regions include:

* EU West 1: `https://ingress.eu-west-1.aws.dash0.com`
* US East 1: `https://ingress.us-east-1.aws.dash0.com`
* Other regions: Check your Dash0 dashboard for the correct endpoint

## Examples

### Basic Metrics Configuration

```yaml
plugins:
  publish-metrics:
    - type: 'open-telemetry'
      serviceName: 'api-gateway'
      metrics:
        exporter: 'otlp-http'
        endpoint: https://ingress.eu-west-1.aws.dash0.com/v1/metrics
        headers:
          Authorization: 'Bearer {{ $env.DASH0_AUTH_TOKEN }}'
        attributes:
          environment: production
          test.type: performance
```

### Advanced Configuration with Traces

```yaml
plugins:
  publish-metrics:
    - type: 'open-telemetry'
      serviceName: 'checkout-service'
      resourceAttributes:
        service.version: '1.5.0'
        deployment.environment: staging
        cloud.provider: aws
        cloud.region: eu-west-1
      metrics:
        exporter: 'otlp-http'
        endpoint: https://ingress.eu-west-1.aws.dash0.com/v1/metrics
        headers:
          Authorization: 'Bearer {{ $env.DASH0_AUTH_TOKEN }}'
        attributes:
          test.scenario: peak-load
      traces:
        exporter: 'otlp-http'
        endpoint: https://ingress.eu-west-1.aws.dash0.com/v1/traces
        headers:
          Authorization: 'Bearer {{ $env.DASH0_AUTH_TOKEN }}'
        sampleRate: 0.1
        smartSampling:
          thresholds:
            firstByte: 500
            total: 2000
```

## Getting Your Auth Token

1. Log in to your Dash0 account
2. Navigate to Settings → Auth Tokens
3. Create a new auth token with appropriate permissions
4. Copy the token and store it securely (e.g., in environment variables)

## Best Practices

1. **Use environment variables**: Store your auth token in environment variables rather than hardcoding
2. **Set appropriate sampling**: For high-volume tests, use sampling to control costs
3. **Add meaningful attributes**: Include attributes that help you filter and analyze data
4. **Use resource attributes**: Set service version and environment for better organization

## Debugging

Set `DEBUG=plugin:publish-metrics:open-telemetry` when running your tests:

```sh
DEBUG=plugin:publish-metrics:open-telemetry artillery run my-script.yaml
```

## Reference

Please refer to the Dash0 docs for details on where to find your endpoint URL:

https://www.dash0.com/documentation/dash0/get-started/sending-data-to-dash0
