3 个版本 (破坏性更新)
0.3.0 | 2021年3月19日 |
---|---|
0.2.0 | 2021年3月5日 |
0.1.0 | 2021年2月14日 |
#380 in 构建工具
330KB
681 行
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 Collector
- Azure Application Insights(使用 OpenTelemetry Collector)
- Jaeger
指标示例
OpenTelemetry 指标规范仍处于实验阶段,因此 tracebuild 中对指标的支持也处于实验阶段。
当前唯一支持的系统是 Prometheus。这里的挑战在于 tracebuild 只运行很短的时间,这并不适合 Prometheus 的基于拉取的指标聚合。为了使用 tracebuild,您需要启动一个 Prometheus Pushgateway,该网关会缓存 tracebuild 指标,直到 Prometheus 抓取它们。如果您的构建命令运行速度比 Prometheus 抓取间隔快,您可能希望推送网关聚合指标。因此,这里使用的 Prometheus 示例采用了 Weaveworks 的 Prometheus 聚合网关
Tracebuild 导出以下指标
tracebuild.cmd.duration
(标签:name
,build_name
,exit_code
)tracebuild.step.duration
(标签:name
,build_name
,status
)tracebuild.build.duration
(标签:name
,branch
,status
)
持续时间指标以直方图的形式导出给 Prometheus。构建时间可能会有很大的变化。为了仍然提供一种查看构建如何随时间变化的方法,直方图包含了从 5 分钟到 45 分钟的 5 分钟间隔的桶。
依赖
~19–33MB
~526K SLoC