mcpField
C
ci-metrics

ci-metrics

github.com/pytorch云与 DevOps105.2k42 次安装今天更新
代码仓库

关于 ci-metrics

ci-metrics 是供 PyTorch 贡献者查询 Grafana 中 CI、测试运行和基础设施指标的技能。它通过封装脚本配置 Grafana 并进行只读认证,提供 ClickHouse 和 Prometheus 查询示例。

主要功能

  1. 01通过封装脚本访问 Grafana
  2. 02查询 ClickHouse CI 与测试数据
  3. 03查询 Prometheus 基础设施指标
  4. 04自动配置固定版本 gcx

适用场景

  1. 01查找频繁失败的工作流任务
  2. 02统计测试运行次数及结果
  3. 03查看运行器队列和集群活动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pytorch/pytorch --skill ci-metrics

安装后在 Claude Code 中输入/ci-metrics确认已加载。

附带文件gcx-wrapper.sh

详细介绍

PyTorch CI 指标

PyTorch CI 和基础设施指标通过 Grafana 提供。所有 Grafana 访问都请使用 .agents/skills/ci-metrics/gcx-wrapper.sh;它会配置 PyTorch Grafana 服务器、上下文和身份验证。只有对该仓库有写入权限的用户才能访问 Grafana。身份验证仅提供只读访问权限。

要求

该包装脚本需要以下工具位于 PATH 中:

  • gh - 获取 Grafana 令牌,且必须已通过身份验证;如果尚未通过身份验证,请运行 gh auth login --hostname github.com --git-protocol ssh --web。
  • curl - 下载 gcx 并从 HUD 获取令牌。

首次使用时,包装脚本会将固定版本且经过校验和验证的 gcx 二进制文件下载到私有缓存(~/.cache/pytorch-ci-metrics/)中,并自动完成身份验证。不会在 PATH 中安装任何内容。如果缺少某个工具或 gh 尚未通过身份验证,脚本会退出并显示说明如何修复的错误信息。

数据源

获取可用数据源列表:

.agents/skills/ci-metrics/gcx-wrapper.sh datasources list

数据包含许多由 PyTorch 仓库所有的仓库的指标。请尽可能将查询限制为仅针对 pytorch/pytorch 仓库。

CI 和测试运行数据

CI 和测试运行数据存储在 grafana-clickhouse-datasource 中。列出所有可用表:

.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse list-tables

重要数据集:

  • GitHub webhook 数据
  • 测试
    • 数据库:tests
    • tests.all_test_runs - 包含每一次测试运行记录。此表非常庞大,请谨慎设置筛选条件并控制查询频率。
    • 不要使用 tests.test_run_s3,因为它只包含部分数据。

如需了解常见查询的更多指导,请将 https://github.com/pytorch/test-infra 克隆到临时目录,并阅读 torchci 文件夹。

查询示例

在 pytorch/pytorch 仓库的 main 分支中,列出过去 2 周失败次数最多的工作流作业:

.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
  SELECT name, count(DISTINCT id) AS failures
  FROM default.workflow_job
  WHERE conclusion = 'failure'
    AND completed_at >= now() - INTERVAL 2 WEEK
    AND repository_full_name = 'pytorch/pytorch'
    AND head_branch = 'main'
  GROUP BY name ORDER BY failures DESC LIMIT 10"

对于某个测试文件,过去一周运行了多少次?通过或失败了多少次?

.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
  SELECT
    file,
    classname,
    name,
    count() AS runs,
    countIf(failure_count = 0 AND error_count = 0 AND skipped_count = 0) AS successful,
    countIf(failure_count > 0 OR error_count > 0) AS fails,
    countIf(skipped_count > 0) AS skipped
  FROM tests.all_test_runs
  WHERE time_inserted >= now() - INTERVAL 7 DAY
    AND file = 'lazy/test_ts_opinfo.py'
  GROUP BY file, classname, name
  ORDER BY runs DESC"

CI 基础设施

CI 基础设施指标存储在 grafanacloud-pytorchci-prom 中。若要更好地了解这些数据,请将以下仓库克隆到临时目录:

查询示例

目前哪些 runner 类型的队列最深(已分配但尚未运行的作业)?

.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'topk(10, clamp_min(sum by (name) (gha_assigned_jobs) - sum by (name) (gha_running_jobs), 0))'

过去 6 小时内每个集群运行了多少个作业,每 30 分钟采样一次?范围查询请使用 --since/--step(或 --from/--to):

.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'sum by (cluster) (gha_running_jobs)' --since 6h --step 30m

评论

支持 Markdown