插件 〉Performance Co-Pilot


开发者

Performance Co-Pilot

注册以接收不定期产品新闻和更新



应用
社区

Performance Co-Pilot

  • 概述
  • 安装
  • 变更日志
  • 相关内容

Performance Co-Pilot Grafana 插件

Build Status Documentation Status

Performance Co-Pilot (PCP) 提供了一个框架和服务来支持系统级性能监控和管理。它为系统中的所有性能数据提供了一个统一的抽象,并提供了许多用于查询、检索和处理这些数据的工具。

Vector Overview Vector Containers bpftrace Flame Graph Vector metrics autocompletion 更多截图

功能

  • 使用 pmseries 查询语言分析历史 PCP 指标
  • 使用 pmwebapi 实时服务分析实时 PCP 指标
  • 使用 bpftrace 脚本进行增强型 Berkeley Packet Filter (eBPF) 追踪
  • 使用利用率、饱和度和错误 (USE) 方法 [2] 检测潜在性能问题并显示可能解决方案的仪表盘
  • 在指标名称、描述、实例中进行全文搜索 [1]
  • 支持 Grafana 警报 [1]
  • 支持派生指标(允许在查询中使用算术运算符和统计函数)[2]
  • 自动配置指标单位 [1,2,3]
  • 自动速率和时间利用率转换
  • 支持热力图、表格 [2,3] 和火焰图 [3]
  • 指标名称 [1,2]、限定符键和值 [1] 的自动补全,以及 bpftrace probe、内置变量和函数 [3]
  • 显示指标 [2] 和 bpftrace 内置函数 [3] 的语义、单位和帮助文本
  • 支持使用 $metric, $metric0, $instance, $some_label, $some_dashboard_variable 进行图例模板化
  • 支持容器 [1,2]
  • 支持每个面板的自定义端点和 hostspec [2,3]
  • 支持重复面板
  • 所有数据源的示例仪表盘

[1] PCP Redis [2] PCP Vector [3] PCP bpftrace

安装说明

文档

在 Grafana Cloud 上安装 Performance Co-Pilot

更多信息请参阅关于插件安装的文档。

变更日志

5.0.0 (2022-06-30)

重要提示:升级说明

由于存在重大变更(参见下方部分),在升级到 grafana-pcp v5 之前需要执行以下说明

  • 转到“配置”->“数据源”,删除所有 PCP Redis、PCP Vector 或 PCP bpftrace 数据源
  • 转到“配置”->“插件”,选择 Performance Co-Pilot 应用并点击“禁用”按钮
  • 转到“仪表盘”->“浏览”,删除 grafana-pcp 安装的任何剩余仪表盘
  • 如果您通过 RPM 包安装了 grafana-pcp,请打开 /etc/grafana/grafana.ini 配置文件并更新以下设置:allow_loading_unsigned_plugins = performancecopilot-pcp-app,performancecopilot-redis-datasource,performancecopilot-vector-datasource,performancecopilot-bpftrace-datasource,performancecopilot-flamegraph-panel,performancecopilot-breadcrumbs-panel,performancecopilot-troubleshooting-panel
  • 执行升级到 grafana-pcp v5 的操作
  • 启用插件,重新设置所有数据源并导入所有仪表盘
  • 如果您有自定义仪表盘,请更新所有面板以使用正确的数据源

增强功能/错误修复

  • 全部:将插件 ID 从 pcp-*-* 重命名为 performancecopilot-*-*
  • 全部:移除 window.setGrafanaPcpLogLevel() 调试函数
  • 杂务:从插件元数据中移除已弃用的 dependencies.grafanaVersion 字段
  • 文档:将 datasource 的拼写更新为 data source

重大变更

  • 数据源和面板插件的内部插件 ID 已从 pcp-X-Y 重命名为 performancecopilot-X-Y,例如 pcp-redis-datasource 已重命名为 performancecopilot-redis-datasource,以符合 Grafana 插件 ID 命名约定

4.0.0 (2022-06-29)

增强功能/错误修复

  • redis, vector:添加按钮以禁用速率转换和时间利用率转换
  • redis:对序列元数据使用 LRU 缓存
  • redis:修复 label_names() 函数,使其在未指定参数时返回所有标签名称(现在查询编辑器中的标签名称自动补全功能再次可用)
  • redis:移除已弃用的 label_values(metric, label) 函数
  • redis:修复具有许多序列的指标的网络错误(需要 PCP v6+)
  • redis:更新调试日志消息
  • bpftrace:在查询编辑器中禁用超出最后一行的滚动
  • 清单:修复导航栏中的仪表盘链接
  • 杂务:将 Grafana 依赖项升级到版本 8.5.6
  • 杂务:重构自定义 Monaco 语言
  • 杂务:在查询编辑器中使用新的 @grafana/ui 表单组件
  • 构建:在 Makefile 中验证 javascript 大小
  • 测试:添加数据源、指标自动补全和导入仪表盘测试
  • CI:将 e2e 测试切换到 cypress,使用矩阵配置在多个 Grafana 版本上运行

移除的功能

  • redislabel_values(metric, label) Grafana 变量查询函数现已移除(自 grafana-pcp v3 起已弃用)

3.2.1 (2021-11-24)

  • 仪表盘:添加关于清单仪表盘与 Grafana v8 不兼容的说明
  • 搜索:修复指标搜索表单使其与 Grafana v8 兼容

3.2.0 (2021-11-11)

  • 仪表盘:新的 PCP Redis MS SQL server 仪表盘
  • 仪表盘:在 PCP Vector eBPF/BCC 概览仪表盘中不隐藏空桶
  • 仪表盘:为所有仪表盘设置修订版本
  • redis:利用 query.options 设置,与 PCP Vector 相同
  • redis:修复 metric() 函数,使其在未指定参数时返回所有指标名称
  • vector:仅在查询选项中启用速率转换时才执行(默认已启用)
  • 构建:添加一个 workaround,在构建时将已弃用的 md4 哈希算法替换为 sha256(md4 在 OpenSSL 3.0 中不可用)
  • 构建:更新 Node.js 和 Go 依赖项以及 grafonnet
  • 构建:在 CI 工作流程中对构建产物进行二次压缩以保留权限(参见 actions/upload-artifact#38
  • 构建:添加 zip Makefile 目标,在 CI 工作流程中运行 grafana/plugincheck
  • 文档:添加 PCP Vector eBPF/BCC 概览仪表盘截图

3.1.0 (2021-06-25)

  • 清单:使用新的 GraphNG 组件,在图表中显示单位,更新帮助文本
  • 全部:通过将基于 Angular.js 的插件配置组件替换为 React 来确保与 Grafana 8.0 的兼容性
  • 仪表盘:为 PCP Vector 主机概览和 PCP 清单仪表盘添加 pmproxy URL 和 hostspec 变量
  • 仪表盘:在所有仪表盘上显示数据源字段
  • 仪表盘:将所有仪表盘标记为只读
  • bpftrace:修复 bpftrace 错误消息(不再无限追加错误)
  • vector, bpftrace:使用 pcp://127.0.0.1 作为默认 hostspec(无功能性更改)
  • 杂务:更新依赖项
  • 测试:将 Go 测试中的 convey 替换为 testify

3.0.3 (2021-02-24)

  • 测试:通过使用另一个 CSS 选择器修复 e2e 测试
  • 杂务:更新依赖项
  • 文档:添加容器指南和截图

3.0.2 (2021-01-22)

  • 清单:将存储指标 disk.dm.* 替换为 disk.dev.*(无需 device mapper 即可使用)

3.0.1 (2020-12-22)

增强功能/错误修复

  • redis:为新的 pmseries(1) 语言函数添加自动补全
  • redis, vector:显示 REST API 返回的错误消息
  • vector, bpftrace:修复关于缺少指标的错误消息
  • vector:为每个上下文注册派生指标
  • vector:处理缺失的指标元数据响应
  • 清单:修复存储警告对话框中的指标名称
  • 测试:修复 32 位架构上的 PCP Redis 数据源测试
  • 构建:更新依赖项

3.0.0 (2020-11-23)

v3.0 版本亮点

  • redis:支持 Grafana 警报
  • redis:在指标名称、描述、实例中进行全文搜索
  • vector:支持派生指标,允许在查询中使用算术运算符和统计函数(参见 pmRegisterDerived(3)
  • vector:可配置的 hostspec(通过中央 pmproxy 访问远程 PMCD)
  • vector:自动配置面板单位
  • 仪表盘:使用清单仪表盘,通过 USE 方法检测潜在性能问题并显示可能的解决方案
  • 仪表盘:新的 MS SQL server 仪表盘 (Louis Imershein)
  • 仪表盘:新的 eBPF/BCC 仪表盘
  • 仪表盘:新的包含 CGroups v2 的容器概览仪表盘

v3.0 重大变更

  • 仪表盘:所有仪表盘现已位于数据源设置页面上的 仪表盘 选项卡中,不再自动导入
  • redis:出于性能原因,在 Grafana 变量查询中使用 label_values(metric, label) 已弃用。仍然支持 label_values(label)

新功能

  • redis:在查询编辑器中添加了 instance.name 和仪表盘变量支持
  • redis:支持热力图
  • 仪表盘:更新了 PCP Redis 指标预览仪表盘:添加了指标下拉菜单
  • 仪表盘:添加了 Vector 的 MS SQL server 仪表盘 (Louis Imershein)
  • 杂务:签署插件

增强功能/错误修复

  • redis:实现一个 workaround,用于处理同一实例和时间戳收到两个值的情况
  • redis:发送一个实例标签请求,而不是每个实例发送一个
  • redis:每个序列仅刷新一次实例
  • redis:改进了错误消息
  • vector:(内部)禁用时间利用率转换的选项
  • vector:在访问模式设置为 server 且设置了 url override 时显示错误消息
  • vector:暂时禁用 redis 回填(pmseries 和 pmapi 实例 ID 不匹配)
  • bpftrace:将 CSV 输出的所有字段解释为字符串
  • 仪表盘:将仪表盘移动到数据源级别:可以在每个数据源设置页面的“仪表盘”选项卡中导入感兴趣的仪表盘
  • 仪表盘:修复仪表盘中的 KB/s 单位,应为 KiB/s
  • 仪表盘:向 BCC 和 bpftrace 仪表盘添加安装说明
  • 仪表盘:更新清单仪表盘的标题并添加单位
  • 搜索:修复数据源检测
  • 搜索:将错误消息传递给用户
  • 轮询器:使用 timeout 代替 interval 以防止计时器重叠
  • 轮询器:如果端点更改,立即注销目标
  • 杂务:更新构建依赖项
  • 测试:为所有数据源添加单元测试
  • 测试:添加端到端测试
  • 文档:更新身份验证指南以使用 scram-sha-256

3.0.0-beta1 (2020-10-12)

新功能

  • redis:支持 Grafana 警报
  • redis:在指标名称、描述、实例中进行全文搜索
  • vector:支持派生指标,允许在查询中使用算术运算符和统计函数,参见 pmRegisterDerived(3)
  • vector:根据当前仪表盘刷新间隔设置后台指标轮询间隔,在后台运行时不停止轮询
  • vector:自动配置面板单位
  • vector:redis 回填:如果 redis 可用,则使用历史数据初始化图表
  • vector:可配置的 hostspec(通过中央 pmproxy 访问远程 PMCD)
  • vector:访问上下文、指标、instancedomain 和实例标签
  • 仪表盘:清单仪表盘:检测潜在性能问题并显示解决问题的可能解决方案
  • 仪表盘:eBPF/BCC 仪表盘
  • 仪表盘:包含 CGroups v2 的容器概览仪表盘

增强功能/错误修复

  • 构建:将仪表盘转换为 jsonnet/grafonnet
  • 全部:使用基于 React 的最新 Grafana UI 组件(Grafana 之前使用 Angular)

Redis 数据源安装

不幸的是,目前无法签署社区插件。因此,需要在 Grafana 配置文件中明确允许 PCP Redis 数据源插件

allow_loading_unsigned_plugins = pcp-redis-datasource

重启 Grafana 服务器,并检查日志以确认插件是否成功加载。

已弃用的功能

  • redis:出于性能原因,在 Grafana 变量查询中使用 label_values(metric, label) 已弃用。仍然支持 label_values(label)

2.0.2 (2020-02-25)

  • vector, redis:移除自动补全缓存(PCP 指标可以动态添加和移除)

2.0.1 (2020-02-17)

2.0.0 (2020-02-17)

  • vector, bpftrace:修复仪表盘加载时的版本检查(防止仪表盘加载时多次检查 pmcd.version)
  • vector, bpftrace:如果 URL 无法访问,将数据源检查框更改为红色
  • redis:添加测试
  • 火焰图:支持多维 eBPF map(例如,显示进程名称所需)
  • 仪表盘:从 Vector 主机概览中移除 BCC 指标(因为默认情况下未安装 BCC PMDA)
  • 其他:更新依赖项

2.0.0-beta1 (2019-12-12)

  • 支持 Grafana 6.5+,取消对 Grafana < 6.5 的支持

1.0.7 (2020-01-29)

  • redis:修复 timespec(修复大时间范围内的空图)

1.0.6 (2020-01-07)

  • redis:支持指标名称中的通配符(例如 disk.dev.*
  • redis:修复标签支持
  • redis:修复图例

1.0.5 (2019-12-16)

  • redis:将默认采样间隔设置为 60s(修复空图边界)
  • 构建:升级 copy-webpack-plugin 以减轻 serialize-javascript 传递依赖项中的 XSS 漏洞
  • 构建:移除已弃用的 uglify-webpack-plugin

1.0.4 (2019-12-11)

增强功能

  • 火焰图:每 5 秒清理一次火焰图堆栈(降低 CPU 负载)
  • 通用:实现 PCP 版本检查

Bug 修复

  • 构建:移除 weak 依赖(与 Node.js 12 不兼容)
  • 构建:升级 terser-webpack-plugin 以减轻 serialize-javascript 传递依赖项中的 XSS 漏洞

1.0.3 (2019-11-22)

  • 修复火焰图依赖(javascript 控制台中的 flamegraph.destroy 错误)

1.0.2 (2019-11-12)

  • 处理计数器环绕(溢出)
  • 将基于时间的计数器转换为时间利用率

1.0.1 (2019-10-24)

火焰图

  • 在 Grafana UI 中按选定的时间范围聚合堆栈计数
  • 添加一个选项以隐藏空闲堆栈

Vector

  • 修复查询编辑器中的容器下拉菜单
  • 从数据源设置页面移除容器设置

Redis

  • 修复值转换(例如,计数器的速率转换)

全部

  • 从数据源请求更多数据点以填充图表面板的边界

1.0.0 (2019-10-11)

bpftrace

  • 支持火焰图
  • bpftrace probe、内置变量和函数(包括帮助文本)的上下文敏感自动补全
  • 将 bpftrace 脚本的输出(例如,使用 printf())解析为 CSV 并在 Grafana 表格面板中显示
  • 示例仪表盘(BPFtrace 系统分析,BPFtrace 火焰图)

Vector

  • 表格输出:在左列显示实例名称
  • 表格输出:支持不匹配的实例名称(没有特定实例的指标单元格将为空白)

Vector & bpftrace

  • 如果查询编辑器中的指标/脚本发生变化,立即停止轮询旧指标/注销旧脚本
  • 改进 pmwebd 兼容性

其他

  • 所有数据源的帮助文本(在查询编辑器中通过 [ ? ] 按钮可见)
  • 将 PCP Live 重命名为 PCP Vector
  • 所有数据源的图标
  • 改进了错误处理

0.0.7 (2019-08-16)

  • grafana-pcp 的初始版本

功能

  • 从 pmseries (PCP Redis)、pmproxy 和 pmwebd (PCP Live) 检索 Performance Co-Pilot 指标
  • 计数器指标的自动速率转换
  • 指标名称 1,2、限定符键和值 2 的自动补全
  • 显示指标 1 的语义、单位和帮助文本
  • 支持使用 $metric, $metric0, $instance, $some_label 进行图例模板化
  • 支持容器
  • 支持重复面板
  • 支持每个查询的自定义端点 URL 和容器设置,支持模板化 1
  • 支持热力图和表格 1
  • PCP Redis 和 PCP Live 的示例仪表盘

1 PCP Live 2 PCP Redis

已知 Bug

  • bpftrace 数据源正在开发中,将在下一版本(约 1-2 周)准备就绪

感谢 Jason Koch 实现了初始的 pcp-live 数据源和主机概览仪表盘。