插件 〉Performance Co-Pilot
Performance Co-Pilot
Performance Co-Pilot Grafana 插件
Performance Co-Pilot (PCP) 提供了一个框架和服务来支持系统级性能监控和管理。它为系统中的所有性能数据提供了一个统一的抽象,并提供了许多用于查询、检索和处理这些数据的工具。
功能
- 使用 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
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也是如此。很酷吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
更多信息请参阅关于插件安装的文档。
在本地 Grafana 上安装
对于本地实例,插件通过简单的 CLI 命令进行安装和更新。插件不会自动更新,但当有可用更新时,您会在 Grafana 中收到通知。
1. 安装应用程序
使用 grafana-cli 工具从命令行安装 Performance Co-Pilot
grafana-cli plugins install
插件将安装到您的 Grafana 插件目录;默认路径是 /var/lib/grafana/plugins。关于 CLI 工具的更多信息。
2. 启用它
接下来,登录您的 Grafana 实例。导航到 Grafana 主菜单中的“插件”部分。
在“插件”部分的 应用 选项卡中点击并选择新安装的应用。
要启用该应用,请点击 配置 选项卡。按照应用提供的说明进行操作并点击“启用”。现在,应用和任何新的 UI 页面都可以从主菜单中访问,具体取决于应用创建者的设计。
如果应用中包含仪表盘,它们将尝试自动安装。要查看、重新导入或删除单个仪表盘,请在该应用页面内点击 仪表盘 选项卡。
变更日志
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 版本上运行
移除的功能
- redis:
label_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)
- 构建:修复生产构建(实现 systemjs/systemjs#2117 和 grafana/grafana#21785 的 workaround)
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 数据源和主机概览仪表盘。