#builds #tracing #open-telemetry #command-line-tool

构建 tracebuild

命令行工具,用于为构建添加功能并将跟踪发送到 OpenTelemetry 支持的跟踪系统

3 个版本 (破坏性更新)

0.3.0 2021年3月19日
0.2.0 2021年3月5日
0.1.0 2021年2月14日

#380 in 构建工具

MIT 许可证

330KB
681

Crates.io Workflow Status

tracebuild

一个小型二进制文件,用于在 GitHub Actions、Travis CI 等系统上为构建添加功能。它底层使用 OpenTelemetry,这意味着您应该能够将其集成到现有的分布式跟踪或指标系统中。

用法

在您的构建中安装二进制文件

curl -L -o tracebuild https://github.com/frigus02/tracebuild/releases/latest/download/tracebuild-linux-amd64
chmod +x tracebuild

生成 ID 和起始时间

TRACEBUILD_BUILD_ID=$(tracebuild id)
TRACEBUILD_BUILD_START=$(tracebuild now)
TRACEBUILD_STEP_ID=$(tracebuild id)
TRACEBUILD_STEP_START=$(tracebuild now)

将每个命令包装在

tracebuild cmd --build $TRACEBUILD_BUILD_ID [--step $TRACEBUILD_STEP_ID] [--name <name>] [--build-name <build_name>] -- my-cmd --with params

每个步骤之后

tracebuild step --build $TRACEBUILD_BUILD_ID [--step $PARENT_SPAN_ID] --id $TRACEBUILD_STEP_ID --start-time $TRACEBUILD_STEP_START [--name <step_name>] [--build-name <build_name>] [--status <success|failure>]

构建完成后

tracebuild build --id $TRACEBUILD_BUILD_ID --start-time $TRACEBUILD_BUILD_START [--name $TRACEBUILD_BUILD_NAME] [--branch <branch>] [--commit <commit>] [--status <success|failure>]

配置

使用环境变量配置导出器。

变量 描述 默认
OTEL_TRACES_EXPORTER 要使用的 OpenTelemetry 跟踪导出器。支持:otlp、jaeger、none otlp
OTEL_METRICS_EXPORTER 要使用的 OpenTelemetry 指标导出器。支持:prometheus、none none
OTEL_EXPORTER_OTLP_ENDPOINT OpenTelemetry Collector 端点 https://127.0.0.1:4317
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT OpenTelemetry Collector 跟踪端点(优先于通用变量) https://127.0.0.1:4317
OTEL_EXPORTER_JAEGER_AGENT_HOST Jaeger 代理主机 127.0.0.1
OTEL_EXPORTER_JAEGER_AGENT_PORT Jaeger 代理端口 6831
OTEL_EXPORTER_JAEGER_ENDPOINT Jaeger 收集器端点。如果指定,则使用它而不是 Jaeger 代理。示例:https://127.0.0.1:14268/api/traces
OTEL_EXPORTER_JAEGER_USER Jaeger 收集器基本认证用户。
OTEL_EXPORTER_JAEGER_PASSWORD Jaeger 收集器基本认证密码。
OTEL_EXPORTER_PROMETHEUS_HOST Prometheus Pushgateway(或兼容)主机 0.0.0.0
OTEL_EXPORTER_PROMETHEUS_PORT Prometheus Pushgateway(或兼容)端口 9464

跟踪示例

Tracebuild 目前最适合跟踪系统。请查看以下示例:

指标示例

OpenTelemetry 指标规范仍处于实验阶段,因此 tracebuild 中对指标的支持也处于实验阶段。

当前唯一支持的系统是 Prometheus。这里的挑战在于 tracebuild 只运行很短的时间,这并不适合 Prometheus 的基于拉取的指标聚合。为了使用 tracebuild,您需要启动一个 Prometheus Pushgateway,该网关会缓存 tracebuild 指标,直到 Prometheus 抓取它们。如果您的构建命令运行速度比 Prometheus 抓取间隔快,您可能希望推送网关聚合指标。因此,这里使用的 Prometheus 示例采用了 Weaveworks 的 Prometheus 聚合网关

Tracebuild 导出以下指标

  • tracebuild.cmd.duration(标签:namebuild_nameexit_code
  • tracebuild.step.duration(标签:namebuild_namestatus
  • tracebuild.build.duration(标签:namebranchstatus

持续时间指标以直方图的形式导出给 Prometheus。构建时间可能会有很大的变化。为了仍然提供一种查看构建如何随时间变化的方法,直方图包含了从 5 分钟到 45 分钟的 5 分钟间隔的桶。

依赖

~19–33MB
~526K SLoC