Skip to content

Commit

Permalink
feat: add Dash0 as supported datastore (#4056)
Browse files Browse the repository at this point in the history
  • Loading branch information
bripkens authored Nov 5, 2024
1 parent 5f98683 commit af157ca
Show file tree
Hide file tree
Showing 38 changed files with 1,232 additions and 5 deletions.
1 change: 1 addition & 0 deletions TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ This is the entire checklist on what we should do to assert that Tracetest is wo
- Test Tracetest examples

- [ ] [Amazon X-Ray example](https://github.com/kubeshop/tracetest/tree/main/examples/tracetest-amazon-x-ray)
- [ ] [Dash0 example](https://github.com/kubeshop/tracetest/tree/main/examples/tracetest-dash0)
- [ ] [Datadog example](https://github.com/kubeshop/tracetest/tree/main/examples/tracetest-datadog)
- [ ] [Dynatrace example](https://github.com/kubeshop/tracetest/tree/main/examples/tracetest-dynatrace)
- [ ] [Elastic APM example](https://github.com/kubeshop/tracetest/tree/main/examples/tracetest-elasticapm)
Expand Down
8 changes: 8 additions & 0 deletions agent/tracedb/tracedb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,14 @@ func TestCreateClient(t *testing.T) {
},
expectedType: "*tracedb.OTLPTraceDB",
},
{
name: "Dash0",
ds: datastore.DataStore{
Type: datastore.DataStoreTypeDash0,
Values: datastore.DataStoreValues{},
},
expectedType: "*tracedb.OTLPTraceDB",
},
{
name: "DataDog",
ds: datastore.DataStore{
Expand Down
3 changes: 2 additions & 1 deletion api/dataStores.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,8 @@ components:
signoz,
dynatrace,
sumologic,
instana
instana,
dash0
]
SupportedClients:
type: string
Expand Down
2 changes: 2 additions & 0 deletions cli/openapi/model_supported_data_stores.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions docs/docs/cli/creating-data-stores.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,16 @@ spec:
region: "us-west-2"
```
### Dash0
```yaml
type: DataStore
spec:
name: Dash0 pipeline
type: dash0
default: true
```
### Datadog
```yaml
Expand Down
102 changes: 102 additions & 0 deletions docs/docs/configuration/connecting-to-data-stores/dash0.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
id: dash0
title: Dash0
description: Use Dash0 as the trace data store for Tracetest. Configure the OpenTelemetry Collector to receive traces and forward them to both Tracetest and Dash0.
keywords:
- tracetest
- trace-based testing
- observability
- distributed tracing
- testing
image: https://res.cloudinary.com/djwdcmwdz/image/upload/v1698686403/docs/Blog_Thumbnail_14_rsvkmo.jpg
---

If you want to use [Dash0](https://www.dash0.com/) as the trace data store, you'll configure the OpenTelemetry Collector to receive traces from your system and then send them to both Tracetest and Dash0. And, you don't have to change your existing pipelines to do so.

:::tip
Examples of configuring Tracetest with Dash0 can be found in the [`examples` folder of the Tracetest GitHub repo](https://github.com/kubeshop/tracetest/tree/main/examples).
:::

## Configuring OpenTelemetry Collector to Send Traces to both Dash0 and Tracetest

In your OpenTelemetry Collector config file:

- Set the `exporter` to `otlp/tracetest`
- Set the `endpoint` to your Tracetest instance on port `4317`

:::tip
If you are running Tracetest with Docker, and Tracetest's service name is `tracetest`, then the endpoint might look like this `http://tracetest:4317`
:::

Additionally, add another config:

- Set the `exporter` to `otlp/dash0`
- Set the `endpoint` to your Dash0 incress like: `ingress.eu-west-1.aws.dash0.com:4317`

```yaml
# collector.config.yaml

# If you already have receivers declared, you can just ignore
# this one and still use yours instead.
receivers:
otlp:
protocols:
grpc:
http:

processors:
batch:
timeout: 100ms

exporters:
logging:
verbosity: detailed
# OTLP for Tracetest
otlp/tracetest:
endpoint: tracetest:4317 # Send traces to Tracetest. Read more in docs here: https://docs.tracetest.io/configuration/connecting-to-data-stores/opentelemetry-collector
tls:
insecure: true
# OTLP for Dash0
otlp/dash0:
endpoint: ingress.eu-west-1.aws.dash0.com:4317
headers:
Authorization: "Auth Token"
service:
pipelines:
traces/tracetest: # Pipeline to send data to Tracetest
receivers: [otlp]
processors: [batch]
exporters: [logging, otlp/tracetest]
traces/Dash0: # Pipeline to send data to Dash0
receivers: [otlp]
processors: [batch]
exporters: [logging, otlp/dash0]
```
## Configure Tracetest to Use Dash0 as a Trace Data Store
Configure your Tracetest instance to expose an `otlp` endpoint to make it aware it will receive traces from the OpenTelemetry Collector. This will expose Tracetest's trace receiver on port `4317`.

## Connect Tracetest to Dash0 with the Web UI

In the Web UI, (1) open Settings, and, on the (2) Trace Ingestion tab, select (3) Dash0.

![Trace Ingestion Settings](../../img/08132024/app.tracetest.io_organizations_at4CxvjIg_environments_ttenv_172de56e3dcbba9b_settings_tab=dataStore_dynatrace.png)

## Connect Tracetest to Dash0 with the CLI

Or, if you prefer using the CLI, you can use this file config.

```yaml
type: DataStore
spec:
name: Dash0 pipeline
type: dash0
default: true
```

Proceed to run this command in the terminal and specify the file above.

```bash
tracetest apply datastore -f my/data-store/file/location.yaml
```
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ Currently, Tracetest integrates with the following OTLP tracing backends. Click

- [OpenTelemetry Collector](/configuration/connecting-to-data-stores/opentelemetry-collector)
- [Azure App Insights](/configuration/connecting-to-data-stores/azure-app-insights)
- [Dash0](/configuration/connecting-to-data-stores/dash0)
- [Datadog](/configuration/connecting-to-data-stores/datadog)
- [Dynatrace](/configuration/connecting-to-data-stores/dynatrace)
- [Instana](/configuration/connecting-to-data-stores/instana)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Currently, Tracetest supports the following data stores. Click on the respective

- [AWS X-Ray](/configuration/connecting-to-data-stores/awsxray)
- [Azure App Insights](/configuration/connecting-to-data-stores/azure-app-insights)
- [Dash0](/configuration/connecting-to-data-stores/dash0)
- [Datadog](/configuration/connecting-to-data-stores/datadog)
- [Dynatrace](/configuration/connecting-to-data-stores/dynatrace)
- [Elastic APM](/configuration/connecting-to-data-stores/elasticapm)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/docs/examples-tutorials/recipes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ This integration point uses the OpenTelemetry Collector as a router to send trac

- [Sending traces to Lightstep and Tracetest from the OpenTelemetry Demo with OpenTelemetry Collector](/examples-tutorials/recipes/running-tracetest-with-lightstep)
- [Sending traces to New Relic and Tracetest from the OpenTelemetry Demo with OpenTelemetry Collector](/examples-tutorials/recipes/running-tracetest-with-new-relic)
- [Sending traces to Dash0 and Tracetest from the OpenTelemetry Demo with OpenTelemetry Collector](/examples-tutorials/recipes/running-tracetest-with-dash0)
- [Sending traces to Datadog and Tracetest from the OpenTelemetry Demo with OpenTelemetry Collector](/examples-tutorials/recipes/running-tracetest-with-datadog)
- [Sending traces to Honeycomb and Tracetest from a Node.js app using the OpenTelemetry Collector](/examples-tutorials/recipes/running-tracetest-with-honeycomb)
- [Sending traces to Dynatrace and Tracetest from the OpenTelemetry Demo with OpenTelemetry Collector](/examples-tutorials/recipes/running-tracetest-with-dynatrace)
Expand Down
Loading

0 comments on commit af157ca

Please sign in to comment.