Skip to main content
telemetrygen is the OpenTelemetry Collector Contrib data generator. It emits synthetic OTLP logs, traces and metrics, and exposes flags that let you shape the data: multiple services, log severities, span statuses and child spans, and different metric types. Use it to send test data to fully managed ClickHouse Observability and explore the results in Search and Chart Explorer.
1

Prerequisites

You need an existing fully managed ClickHouse Observability service and network access to its managed telemetry endpoint. See the fully managed Getting Started guide.
2

Install telemetrygen

With Docker installed and running, define a wrapper to run telemetrygen from its official container image:
Or install the binary with Go:
3

Set environment variables

Open your ClickHouse Observability service and go to Team Settings → Managed Telemetry. Copy the OTLP HTTP endpoint and API key.Set the endpoint to its host and port, removing the https:// prefix. For example, https://YOUR_OTEL_ENDPOINT:4318 becomes YOUR_OTEL_ENDPOINT:4318. Do not append a signal path such as /v1/logs.
Define a small tg helper so each command only specifies what varies (service, severity, status, attributes):
The helper uses OTLP HTTP over TLS with certificate verification. Omit --otlp-insecure and --otlp-insecure-skip-verify. Each command runs for 30 seconds and authenticates with your managed telemetry API key.
4

Generate logs

Send informational, warning, and error logs from three services:
The most useful log flags:
  • --service sets service.name so events are attributable to a service.
  • --severity-text and --severity-number set the level (severity-number ranges from 1 to 24).
  • --body sets the log message.
  • --otlp-attributes sets resource-level attributes (key="value", key=true, or key=<integer>).
  • --telemetry-attributes sets per-record attributes.
5

Generate traces

Send multi-span traces with successful and error statuses from several services. Each command generates independent traces; these examples do not create calls between services:
The most useful trace flags:
  • --child-spans generates that many child spans per trace, giving each trace real depth.
  • --span-duration sets how long each span lasts (for example 120ms, 2s).
  • --status-code is one of Unset, Error, Ok (or 0, 1, 2). Use Error to exercise error views.
  • --span-links adds links between spans.
  • --workers runs several generators in parallel for a higher, more varied volume.
6

Generate metrics

Send a sum, a gauge, and a histogram. These are synthetic values, not measurements of your system. Each command stops automatically after 30 seconds:
--metric-type accepts Gauge, Sum, Histogram, or ExponentialHistogram. --otlp-metric-name names the series so you can find it in the UI, and --aggregation-temporality is delta or cumulative.
7

Verify in ClickHouse Observability

Open your ClickHouse Observability service. In the Search view, set the time range to Last 15 minutes and switch the source between Logs and Traces. Filter on ServiceName to see the frontend, checkout, cart, and payment services, and on SeverityText to find the warning and error log lines. Open a payment trace to see the child spans and the error status. Open the Chart Explorer, select Metrics, and chart one of the metric names you set above (for example http.server.requests) to verify metrics ingestion.