Skip to main content
telemetrygen 是 OpenTelemetry Collector Contrib 提供的数据生成器。它会生成合成的 OTLP 日志、链路追踪和指标,并提供可用于控制数据形态的命令行参数,例如多个服务、日志级别、span 状态和子 span,以及不同的指标类型。你可以用它来确认 ClickStack OpenTelemetry collector 是否正在接收数据,以及多样化且逼真的事件是否会出现在 ClickStack UI 中。 本指南假定 collector 已在 4317 (gRPC) 和 4318 (HTTP) 上开放 OTLP 端点,并且正在运行。
1

前置条件

本指南假定你已完成托管 ClickStack 入门指南,并且已有一个正在运行的 OpenTelemetry Collector,其 OTLP gRPC (4317) 和 HTTP (4318) 端点可从运行 telemetrygen 的机器访问。如果你已使用 OTLP_AUTH_TOKEN 保护该 Collector,请将该值妥善保存备用。
2

安装 telemetrygen

直接通过它的 Docker 镜像运行 telemetrygen (无需安装) 。定义一个简单的包装命令,方便保持下面的命令简洁易读;--add-host 可让容器访问监听在主机上的 collector:
telemetrygen() {
  docker run --rm --add-host=host.docker.internal:host-gateway \
    ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:latest "$@"
}
export OTEL_ENDPOINT=host.docker.internal:4317
或者使用 Go 安装该二进制文件,并将目标设为 localhost
go install github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen@latest
export OTEL_ENDPOINT=localhost:4317
3

设置环境变量

如果 collector 已启用安全机制,请导出认证令牌:
export OTLP_AUTH_TOKEN=<your_otlp_auth_token>
未受保护的 collectorClickStack OpenTelemetry collector 默认不启用身份验证。如果你尚未按照保护 collector中的说明设置 OTLP_AUTH_TOKEN,请从下面的辅助命令中删除 --otlp-header 这一行。
定义一个简洁的 tg 辅助函数,这样每条命令只需指定会变化的部分 (service、severity、status、属性) :
tg() { local signal=$1; shift; telemetrygen "$signal" \
  --otlp-endpoint ${OTEL_ENDPOINT} --otlp-insecure \
  --otlp-header "authorization=\"${OTLP_AUTH_TOKEN}\"" \
  --rate 5 --duration 30s "$@"; }
4

生成日志

发送跨服务、贴近真实的不同严重级别日志:以信息级为主,夹杂少量警告和错误,而不是单一均匀的日志流:
tg logs --service frontend --severity-text Info  --severity-number 9  --body "GET /api/products 200" \
  --otlp-attributes 'deployment.environment="production"' \
  --telemetry-attributes 'http.method="GET"' --telemetry-attributes 'http.status_code="200"'
tg logs --service checkout --severity-text Warn  --severity-number 13 --body "retrying payment authorization" \
  --otlp-attributes 'deployment.environment="production"' \
  --telemetry-attributes 'http.method="POST"'
tg logs --service payment  --severity-text Error --severity-number 17 --body "payment gateway timeout" \
  --otlp-attributes 'deployment.environment="production"' \
  --telemetry-attributes 'http.status_code="500"'
最有用的日志参数:
  • --service 设置 service.name,以便将事件归因到某个服务。
  • --severity-text--severity-number 设置级别 (severity-number 的取值范围为 1 到 24) 。
  • --body 设置日志消息。
  • --otlp-attributes 设置资源级属性 (key="value"key=truekey=<integer>) 。
  • --telemetry-attributes 设置每条记录的属性。
5

生成链路追踪

发送来自多个健康服务和一个故障依赖项的多 span 链路追踪。这样可以让服务地图呈现更贴近真实的形态:大多数服务健康,只有一个服务报错,并填充错误相关视图:
# Healthy services: the bulk of the traffic, all spans Ok
for svc in frontend checkout cart; do
  tg traces --service "$svc" --child-spans 3 --span-duration 80ms --status-code Ok \
    --otlp-attributes 'deployment.environment="production"' \
    --telemetry-attributes "http.route=\"/$svc\""
done

# One slow dependency returning errors
tg traces --service payment --child-spans 3 --span-duration 450ms --span-links 1 --status-code Error \
  --otlp-attributes 'deployment.environment="production"' \
  --telemetry-attributes 'http.route="/charge"'
最有用的 trace 标志:
  • --child-spans 为每个 trace 生成指定数量的子 span,让每个 trace 具有更真实的层次深度。
  • --span-duration 设置每个 span 的持续耗时 (例如 120ms2s) 。
  • --status-code 可设为 UnsetErrorOk (或 012) 。使用 Error 可触发 error 视图。
  • --span-links 在 span 之间添加链接。
  • --workers 并行运行多个生成器,以产生更高、更多样的流量。
6

生成指标

发送三种常见的指标类型,让仪表盘中显示计数器、Gauge 和分布。与某些生成器不同,telemetrygen 在生成指标时会遵循 --duration 设置,因此无需手动停止:
tg metrics --service frontend --metric-type Sum       --otlp-metric-name http.server.requests --aggregation-temporality cumulative
tg metrics --service frontend --metric-type Gauge     --otlp-metric-name system.memory.usage
tg metrics --service payment  --metric-type Histogram --otlp-metric-name http.server.duration
--metric-type 可接受 GaugeSumHistogramExponentialHistogram--otlp-metric-name 用于为该序列命名,便于你在 UI 中找到它;--aggregation-temporality 则可设为 deltacumulative
7

在 ClickStack 中验证

从 ClickHouse Cloud 控制台打开 ClickStack UI。在 Search 视图中,将时间范围设置为 Last 15 minutes,然后在 LogsTraces 数据源之间切换。按 ServiceName 过滤,可查看 frontendcheckoutcartpayment 服务;按 SeverityText 过滤,可查找警告和错误日志。打开一条 payment trace,查看其子 span 和错误状态。打开 Chart Explorer,选择 Metrics,并将你在上面设置的某个指标名称绘制成图表 (例如 http.server.requests) ,以验证指标摄取。
Last modified on June 25, 2026