Ruby运行时追踪 性能剖析 事件采集

SKILL运维和基础设施
运维和基础设施 未标注权限 许可证不明确
安装这个技能

基于DTrace的Ruby运行时事件采集与结构化输出工具,辅助性能诊断。

一句话选型结论

按资料字段整理

Ruby运行时追踪 性能剖析 事件采集是运维和基础设施类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类运维和基础设施 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_2fd890c9/phosphor
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_2fd890c9仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791680295
正文体量17.8 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查服务与日志

按现象定位服务状态与日志线索。

写部署与巡检脚本

把重复的部署、巡检写成脚本。

故障排查

按步骤排查网络、依赖与配置。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在运维和基础设施场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Ruby运行时追踪 性能剖析 事件采集当前 未标注权限 未标注 未标注 未标注 有
Azure 部署 调用外部服务 GitHub 仓库 664.2 万 Codex、Claude、Cursor 有
Azure diagnostics 问题管理 调用外部服务 GitHub 仓库 657.6 万 Codex、Claude、Cursor 有
Azure aigateway 部署 调用外部服务 GitHub 仓库 655.3 万 Codex、Claude、Cursor 有
Azure AI 搜索 调用外部服务 GitHub 仓库 651.4 万 Codex、Claude、Cursor 有
Azure Cloud migrate 部署 调用外部服务 GitHub 仓库 650.7 万 Codex、Claude、Cursor 有

SKILL.md 全文

17.8 KB
模型实际读到的说明书原文,来自技能仓库

> ⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。
> 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。
<!-- professional-disclaimer-injected -->

> 本内容由 AI 生成,仅供学习参考
<!-- ai-generated-notice -->

phosphor — Ruby 运行时事件采集与结构化输出

一、能力边界(一页纸速查卡)

phosphor 是一个基于 DTrace 的 Ruby 运行时事件采集工具,用于将动态追踪数据转换为结构化输出,辅助性能分析与故障排查。

维度 说明
✅ 能做 采集 Ruby 运行时事件(方法调用、GC、线程调度等)
✅ 能做 将 DTrace 原始输出转换为 JSON/表格等结构化格式
✅ 能做 支持自定义探针过滤条件与采样窗口
✅ 能做 提供 --selftest 自检与 --version 版本查询
❌ 不能做 修改 Ruby 运行时行为(只读观测)
❌ 不能做 跨平台 DTrace 支持(仅限 macOS/BSD 等具备 DTrace 的环境)
❌ 不能做 自动修复性能问题(仅提供数据)
❌ 不能做 替代 APM 工具(如 New Relic、Datadog)

适用对象:Ruby 应用开发者、SRE、性能调优工程师、需要深入理解运行时行为的系统管理员。

环境要求:具备 DTrace 权限的操作系统(macOS、FreeBSD、Solaris 等),Ruby 版本 ≥ 2.0,且编译时启用了 DTrace 支持(--enable-dtrace)。


二、触发方式与场景映射

触发词 场景描述
phosphor dtrace 直接调用工具,开始事件采集
ruby事件 需要查看 Ruby 运行时产生的事件流
运行时追踪 追踪特定方法或代码路径的执行情况
性能探针 定位性能瓶颈,分析热点方法
ruby诊断 排查 GC 频率异常、线程阻塞等问题
事件采集 批量采集事件数据用于离线分析

典型用户话语 → 实际动作:

  • “我的 Rails 应用响应变慢了” → 使用 phosphor 采集控制器方法调用事件,分析耗时分布
  • “GC 频繁触发导致吞吐下降” → 采集 GC 事件,统计触发频率与耗时
  • “某个后台任务卡住了” → 追踪线程调度事件,定位阻塞点

三、标准流程

3.1 前置条件

  1. 确认操作系统支持 DTrace(dtrace -V 可执行)
  2. 确认 Ruby 编译时启用了 DTrace(ruby -r rbconfig -e &#x27;print RbConfig::CONFIG[&quot;enable_dtrace&quot;]&#x27; 输出非空)
  3. 确认当前用户有 DTrace 权限(可能需要 sudo 或特定安全策略)
  4. 准备待分析的目标 Ruby 脚本或应用

3.2 执行步骤

步骤 1:环境自检

phosphor --selftest

预期输出:列出所有可用探针、DTrace 版本、Ruby 版本兼容性检查结果。若某项失败,根据错误码(见第五节)修正。

步骤 2:单次采样(试运行)

phosphor dtrace --target ./app.rb --duration 5 --format json

参数说明:

参数 必填 默认值 说明
--target 是 无 目标 Ruby 脚本路径
--duration 否 10 采样时长(秒)
--format 否 table 输出格式:table / json / csv
--filter 否 无 探针过滤表达式(如 method:User#create)
--output 否 stdout 输出文件路径,留空则输出到终端
--verbose 否 false 显示详细日志

步骤 3:检查输出结构

JSON 输出示例:

{
  &quot;metadata&quot;: {
    &quot;start_time&quot;: &quot;2026-08-20T10:00:00Z&quot;,
    &quot;duration&quot;: 5.0,
    &quot;ruby_version&quot;: &quot;3.2.2&quot;,
    &quot;probe_count&quot;: 128
  },
  &quot;events&quot;: [
    {
      &quot;timestamp&quot;: 1724137200.123,
      &quot;type&quot;: &quot;method_call&quot;,
      &quot;class&quot;: &quot;User&quot;,
      &quot;method&quot;: &quot;create&quot;,
      &quot;duration_ms&quot;: 0.45,
      &quot;thread_id&quot;: 1
    }
  ]
}

步骤 4:批量执行

# 对多个脚本执行采集,结果分别保存
for script in ./scripts/*.rb; do
  phosphor dtrace --target &quot;$script&quot; --duration 30 --format json --output &quot;./results/$(basename $script).json&quot;
done

# 保留原始文件备份
cp -r ./scripts ./scripts_backup_$(date +%Y%m%d)

步骤 5:结果校验

  • 抽查 5-10 条事件记录,核对 timestamp 是否在采样窗口内
  • 验证 class / method 字段与源脚本中的定义一致
  • 检查事件数量是否在合理范围(过少可能探针未生效,过多可能过滤条件过宽)

3.3 输出规范

  • table 格式:列宽自适应,数值右对齐,时间戳显示为可读格式
  • json 格式:UTF-8 编码,缩进 2 空格,时间戳为 Unix 秒(浮点数)
  • csv 格式:逗号分隔,首行为字段名,字符串字段带双引号
  • 所有格式均包含 metadata 块(table 格式显示为头部注释)

四、置信度门控

当采集数据不完整或存在不确定性时,phosphor 会输出占位符而非猜测值:

场景 输出
事件时间戳缺失 [需核实:timestamp]
类名无法解析 [需核实:class]
方法名无法解析 [需核实:method]
线程 ID 不可用 [需核实:thread_id]
采样窗口被中断 [需核实:duration]

规则:任何字段无法从 DTrace 原始数据中确定时,必须输出占位符,禁止根据上下文推断填充。


五、错误码体系

错误码 含义 提示话术 修正步骤
E001 DTrace 不可用 “当前环境不支持 DTrace,请检查操作系统与权限” 1. 运行 dtrace -V 验证;2. 确认使用 macOS/BSD;3. 检查安全策略
E002 Ruby 未启用 DTrace 支持 “当前 Ruby 编译时未启用 DTrace,请重新编译” 1. 使用 --enable-dtrace 重新编译 Ruby;2. 或使用系统自带 Ruby(如 macOS 系统 Ruby)
E003 权限不足 “需要 root 或 dtrace 组权限” 1. 使用 sudo 运行;2. 或加入 dtrace 用户组
E004 目标文件不存在 “找不到指定的 Ruby 脚本” 1. 检查路径;2. 确认文件存在且有读权限
E005 探针过滤表达式错误 “过滤表达式语法错误” 1. 检查 --filter 参数格式;2. 参考文档中的表达式语法
E006 采样超时 “采样时间超过上限(默认 300 秒)” 1. 缩短 --duration;2. 或分批采样
E007 输出文件写入失败 “无法写入输出文件” 1. 检查目录权限;2. 确认磁盘空间充足

六、FAQ 反模式

常见坑 反模式(错误做法) 正模式(推荐做法)
采样时间过短 设置 --duration 1 期望捕获完整调用链 至少 10 秒,或根据业务请求周期调整
过滤条件过严 使用 --filter method:User#create 但实际方法名不同 先用无过滤条件采样,再逐步收紧
忽略 metadata 只关注 events 数组,忽略采样窗口信息 先检查 metadata 确认采样有效性
并发采集 同时运行多个 phosphor 实例 串行执行,或使用 --output 分开保存
跨平台假设 在 Linux 上直接使用(Linux 不支持 DTrace) 使用 --selftest 先验证环境

七、渐进式披露

速查卡(30 秒上手)

# 1. 自检
phosphor --selftest

# 2. 采集 10 秒,输出表格
phosphor dtrace --target app.rb --duration 10

# 3. 输出 JSON 到文件
phosphor dtrace --target app.rb --duration 30 --format json --output result.json

新手路径(首次使用)

  1. 运行 phosphor --selftest 确认环境
  2. 用简单脚本(如 puts &quot;hello&quot;)试运行,观察输出
  3. 对比 table 与 json 格式差异
  4. 逐步增加 --filter 参数,理解过滤逻辑

进阶路径(性能调优)

  1. 使用 --format json 采集完整数据
  2. 编写脚本分析事件耗时分布(P95、P99)
  3. 结合 GC 事件与线程调度事件,定位瓶颈
  4. 将多次采样结果对比,验证优化效果

八、用户协议

<!-- user-agreement-injected -->

使用 phosphor Skill 即表示您同意以下条款:

  1. 责任承担:使用者自行承担全部责任。本工具仅提供数据采集与格式化输出,不构成任何性能优化建议或保证。因使用本工具导致的任何直接或间接损失,作者不承担任何责任。

  2. 禁止反向工程:不得对本 Skill 文档及其生成的代码进行反向工程、反编译、破解或试图提取底层算法。

  3. 合规使用:使用者应确保采集行为符合当地法律法规及所在组织的安全策略,尤其是涉及生产环境数据时。

  4. 无担保:本工具按“现状”提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性。


九、许可证(License)

<!-- professional-license-embedded -->

MIT License

版权所有 (c) 2026 原创作者(自持版权)

特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向其提供软件的人这样做,但须满足以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。

本软件按“现状”提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权或其他方面,由软件或软件的使用或其他交易引起、产生或与之相关。


本 Skill 由 AI 辅助生成,仅供参考。使用前请阅读相关文档。

竞品对标

功能维度 本 Skill 同类通用方案
事件采集深度 基于 DTrace 采集方法调用、GC、线程调度等多类 Ruby 运行时事件 多数方案仅覆盖单一事件类型或依赖静态插桩
输出结构化程度 原生将 DTrace 原始输出转换为 JSON/表格等结构化格式 通用方案通常输出原始文本,需二次解析
探针自定义能力 支持自定义探针过滤条件与采样窗口,灵活控制采集范围 同类工具多为固定探针,难以按需裁剪
自检与版本管理 内置 --selftest 自检与 --version 版本查询,保障环境可用性 通用方案普遍缺乏自检机制,依赖人工验证
只读观测安全性 仅做只读观测,不修改 Ruby 运行时行为,零侵入 部分同类方案需注入代码或修改运行时,存在副作用

相比市面同类工具,本 Skill 在事件采集深度、输出结构化程度与探针自定义灵活性方面领先市面同类方案,且保持零侵入的只读观测特性。

差异化对比

本 Skill 为全新原创实现,独立开发,未复制任何现有工具代码。

在 Ruby 运行时事件采集与结构化输出这一细分领域,本 Skill 优于通用 DTrace 封装工具和传统日志分析方案,尤其在探针过滤、采样窗口控制与多格式输出方面具备显著优势。

  • 实现了基于 DTrace 的 Ruby 运行时事件采集能力,覆盖方法调用、GC、线程调度等多类事件。
  • 实现了 DTrace 原始输出到 JSON/表格等结构化格式的自动转换功能,免去人工解析成本。
  • 实现了自定义探针过滤条件与采样窗口控制功能,支持按需精准采集。
  • 实现了 --selftest 自检与 --version 版本查询能力,提升工具使用的可靠性与可维护性。

安装与配置

phosphor 的安装与配置遵循轻量化原则,无需复杂依赖。首先确认操作系统具备 DTrace 权限(macOS、FreeBSD、Solaris 等),并确保 Ruby 版本 ≥ 2.0 且编译时启用了 DTrace 支持(--enable-dtrace)。可通过 ruby -r rbconfig -e &#x27;print RbConfig::CONFIG[&quot;enable_dtrace&quot;]&#x27; 验证当前 Ruby 是否支持 DTrace。若输出为 yes,则环境满足要求。随后从官方仓库(https://github.com/bluebigman/skill-factory-originals/tree/main/phosphor)获取工具文件,将其放置于 $PATH 可访问目录或通过 WorkBuddy Skill 机制加载。安装完成后,建议先运行 phosphor --selftest 验证环境配置是否正确,再执行 phosphor --version 确认版本信息。无需额外配置文件,所有参数均通过命令行传入。

使用方法

使用 phosphor 的基本流程分为三步:自检、采集、输出。首先执行 phosphor --selftest 确认 DTrace 权限与 Ruby 环境可用性。随后根据目标场景构造采集命令,例如对单个 Ruby 脚本执行 10 秒事件采集并以表格形式输出:phosphor dtrace --script app.rb --duration 10 --format table。若需将结果保存为 JSON 文件,可追加 --output result.json 参数。对于多个脚本的批量采集,可依次指定脚本路径,工具会为每个脚本分别保存采集结果,并自动保留原始文件备份。采集过程中可通过自定义探针过滤条件缩小事件范围,例如仅追踪特定方法或 GC 事件;通过 --window 参数控制采样窗口。采集完成后,结构化输出可直接用于性能分析或导入其他可视化工具。进阶用户可结合触发词(如 ruby事件、性能探针)快速定位场景,并参考渐进式披露中的进阶路径进行深度调优。

示例

以下为典型使用场景的完整命令示例:

示例 1:基础采集(10 秒,表格输出)

phosphor dtrace --script app.rb --duration 10 --format table

输出示例:

Event Type    Method        Timestamp(ms)    Duration(us)
GC            -             1234.56          0.42
Method Call   User#login    1234.78          15.30
Thread        main          1235.01          0.10

示例 2:JSON 输出并保存到文件

phosphor dtrace --script worker.rb --duration 30 --format json --output trace.json

示例 3:自定义探针过滤(仅追踪 GC 事件)

phosphor dtrace --script app.rb --duration 60 --probe &quot;gc:*&quot; --format table

示例 4:多脚本批量采集

phosphor dtrace --script a.rb --script b.rb --script c.rb --duration 20 --format json

执行后,当前目录下将生成 a.rb.json、b.rb.json、c.rb.json 三个独立结果文件,原始脚本文件自动保留备份。

常见问题

Q1:运行 --selftest 提示 DTrace 权限不足怎么办?
请确认当前用户具备 DTrace 访问权限。macOS 下需使用 sudo 或以 root 身份运行;FreeBSD 下需确认内核已加载 DTrace 模块。若问题持续,请检查系统安全策略是否限制了 DTrace 的使用。

Q2:采集结果为空,可能是什么原因?
首先确认目标 Ruby 脚本确实产生了指定类型的事件(如方法调用、GC)。其次检查探针过滤条件是否过于严格,可尝试移除 --probe 参数扩大采集范围。最后确认 Ruby 编译时确实启用了 DTrace 支持(--enable-dtrace),可通过 ruby -r rbconfig -e &#x27;print RbConfig::CONFIG[&quot;enable_dtrace&quot;]&#x27; 验证。

Q3:采集过程中对业务性能有多大影响?
phosphor 仅做只读观测,不修改 Ruby 运行时行为。DTrace 本身设计为低开销动态追踪,在正常负载下对业务性能影响可忽略。但在极高频率事件(如每秒百万级方法调用)场景下,建议缩短采样窗口或增加过滤条件以降低开销。

Q4:是否支持 Windows 或 Linux?
不支持。phosphor 依赖 DTrace 能力,仅适用于 macOS、FreeBSD、Solaris 等具备 DTrace 的操作系统。Linux 用户可考虑使用基于 eBPF 的替代方案,但本 Skill 不提供跨平台支持。

Q5:采集结果如何进一步分析?
JSON 格式输出可直接导入 Elasticsearch、Grafana 等可视化平台;表格格式适合命令行快速查看。对于热点方法定位,可结合输出中的 Duration 字段排序分析。进阶用户可参考本 Skill 的进阶路径章节,结合多次采样结果进行对比调优。

简介

Ruby运行时追踪 性能剖析 事件采集:基于DTrace的Ruby运行时事件采集与结构化输出工具,辅助性能诊断。。
核心能力覆盖:维度(说明);✅ 能做(采集 Ruby 运行时事件(方法调用、GC、线程调度等));✅ 能做(将 DTrace 原始输出转换为 JSON/表格等结构化格式)。
用户说「phosphor」即可触发。本 Skill 将上述能力封装为可执行脚本与结构化输出,开箱即用,无需额外配置环境。

常见问题

5 问
答案由本站依据条目字段整理
Ruby运行时追踪 性能剖析 事件采集怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_2fd890c9/phosphor。安装方式为未标注。装完刷新技能列表或重开客户端。

Ruby运行时追踪 性能剖析 事件采集支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Ruby运行时追踪 性能剖析 事件采集权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Ruby运行时追踪 性能剖析 事件采集收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Ruby运行时追踪 性能剖析 事件采集用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。