- Fully managed
- Self-managed
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 Or install the binary with Go:
telemetrygen from its official container image: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 Define a small The helper uses OTLP HTTP over TLS with certificate verification. Omit
https:// prefix. For example, https://YOUR_OTEL_ENDPOINT:4318 becomes YOUR_OTEL_ENDPOINT:4318. Do not append a signal path such as /v1/logs.tg helper so each command only specifies what varies (service, severity, status, attributes):--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:
--servicesetsservice.nameso events are attributable to a service.--severity-textand--severity-numberset the level (severity-numberranges from 1 to 24).--bodysets the log message.--otlp-attributessets resource-level attributes (key="value",key=true, orkey=<integer>).--telemetry-attributessets 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-spansgenerates that many child spans per trace, giving each trace real depth.--span-durationsets how long each span lasts (for example120ms,2s).--status-codeis one ofUnset,Error,Ok(or0,1,2). UseErrorto exercise error views.--span-linksadds links between spans.--workersruns 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.