实用提示:使用 k6 和 Grafana MCP 进行人工智能驱动的性能测试
《实用笔记》操作指南:使用 k6 和 Grafana MCP 进行人工智能驱动的性能测试——面向采用该模式的团队提供的契约、检查项以及可直接插入的代码模块。
可将此内容视为《利用k6与Grafana MCP实现人工智能驱动的性能测试》一文中理念的面向操作员的简化版本:清晰的阶段划分、有序的代码模块,以及便于交接时参考的恢复说明。 将“概览”阶段视为可量化的界面使用效果最佳。在扩大范围之前,先记录一份标准测试案例、一个故障实例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能标志应集中存放于一个位置,这样操作员无需查看整个架构即可进行审核。
k6 MCP实际提供的功能
对于k6 MCP阶段,在修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误消息处理都是产品功能的一部分,而非后续需要补充的内容。 在网关处进行身份验证,在数据层再次授权。仅凭承载令牌并不能界定租户边界。
配置k6 MCP
在设置 k6 MCP 阶段时,应在修改代码之前明确输入参数、该步骤的负责人以及退出标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。相比冗长的脚本,更应采用小型、可测试的单元。当某个步骤失败时,故障原因应能指向单一责任主体,而非复杂的流程链。在网关处进行身份验证,在数据层再次授权——仅凭承载令牌并不足以界定租户边界。
k6 x mcp
k6 x agent init cursor
k6 x agent init claude-code
k6 x agent init vscode-copilot
k6 x agent init codex-cli
mcp-k6
docker pull grafana/mcp-k6:latest
{
"mcpServers": {
"k6": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"grafana/mcp-k6"
]
}
}
}
首个用例:根据需求生成 k6 测试
在“首次使用场景生成”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,定义成功判定条件,并拒绝默许的半完成状态。 在网关处进行身份验证,在数据层再次授权。仅凭承载令牌并不足以界定租户边界。 在“首次使用场景生成”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个操作人员可审计的位置,无需查看整个系统结构。
import http from 'k6/http';
import { check } from 'k6';
export const options = {
stages: [
{ duration: '2m', target: 100 },
{ duration: '5m', target: 100 },
{ duration: '1m', target: 0 },
], thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};export default function () {
const response = http.get(
'https://staging.example.com/api/products/search?q=laptop'
); check(response, {
'status is 200': (r) => r.status === 200,
});
}
第二种使用场景:在运行实际负载测试前进行验证
在处理第二种使用场景的验证阶段时,首先明确相关要求:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改不会偏离原有设计。 同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误消息处理都是产品功能的一部分,而非后续需要补充的内容。 需为每次调用记录工具名称、参数哈希值、延迟时间以及最终结果。如果没有这些记录,调试过程将会浪费大量时间。
Generate
↓
Validate
↓
Review
↓
Small execution
↓
Controlled load test
Generate
↓
"Run it"
↓
Surprise
现在添加 Grafana MCP
在处理“现在添加 Grafana MCP”阶段时,首先需明确相关规范:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合要求。 建议使用小型、可测试的单元而非庞大的脚本。当某个步骤失败时,故障应能指向具体的责任模块,而非复杂的流程链。 需为每次调用记录工具名称、参数哈希值、延迟时间以及执行结果。没有这些记录,调试代理循环将会耗费大量时间。
配置 Grafana MCP
在完成“设置 Grafana MCP”阶段时,首先需明确相关契约:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改始终符合约定。 将此阶段视为输入与验证后输出之间的契约。为相关产物命名,定义成功检测标准,并杜绝无声的半完成状态。 需记录每次调用的工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试代理将陷入无止境的循环,耗费大量时间。 在完成“设置 Grafana MCP”阶段时,首先需明确相关契约:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改始终符合约定。 应将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。
{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": [
"mcp-grafana"
],
"env": {
"GRAFANA_URL": "https://your-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "YOUR_TOKEN"
}
}
}
}
brew install mcp-grafana
为 Grafana 授予适当的权限
将“为 Grafana 授予适当权限”这一流程视为可度量的环节来处理效果最佳。在扩大范围之前,需记录一个成功的用例、一个失败案例以及回滚说明。 同时记录正常流程和恢复流程。重试机制、人工审核环节以及错误处理都属于产品功能的一部分,而非后续需要补充的内容。 应使用结构明确的工具,并标注清晰的副作用信息。主机需要在自动批准之前知道哪些调用会改变系统状态。
第四种使用场景:将 k6 测试结果与 Prometheus 相关联
第四种用例——关联阶段,若将其视为可度量的对象来处理,则效果最佳。在扩大范围之前,先记录一份理想的测试用例、一个故障案例以及回滚说明。相比庞大的脚本,应优先选择小型且可测试的单元。当某个步骤出现故障时,故障应指向单一的责任模块,而非复杂的流程链。应使用具有明确结构规范和清晰副作用标注的工具,这样主机在自动批准之前就能知道哪些调用会改变系统状态。
http_req_duration p95: 1.2s
http_req_failed: 3.4%
k6
p95 latency ↑
│
├── CPU ↑
├── DB connections ↑
└── HTTP 5xx ↑
第五种用例:找出性能退化背后的错误
将“第五个用例发现”阶段视为可度量的工作面时,其效果最佳。在扩大范围之前,需记录一份理想案例、一个失败案例以及回滚说明。 应将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,杜绝默许的半完成状态。 需提供具有严格结构且带有明确副作用标签的工具。主机在自动批准之前必须清楚哪些调用会改变系统状态。 将“第五个用例发现”阶段视为可度量的工作面时,其效果最佳。在扩大范围之前,需记录一份理想案例、一个失败案例以及回滚说明。 配置应置于应用程序代码之外。环境文件、密钥存储和功能开关应集中存放,以便操作人员无需查看整个系统结构即可进行审计。
Open Grafana
↓
Find Loki
↓
Find service
↓
Find time range
↓
Write query
↓
Inspect logs
↓
Compare with k6 timestamps
实用的MCP配置
在“实用MCP配置”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的功能。 在网关处进行身份验证,在数据层进行重新授权。仅凭承载令牌并不能作为租户边界。
{
"mcpServers": {
"k6": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"grafana/mcp-k6"
]
},
"grafana": {
"command": "uvx",
"args": [
"mcp-grafana"
],
"env": {
"GRAFANA_URL": "https://your-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "${GRAFANA_SERVICE_ACCOUNT_TOKEN}"
}
}
}
}
AI coding agent
│
┌─────────┴─────────┐
│ │
k6 MCP Grafana MCP
│ │
▼ ▼
k6 execution Prometheus / Loki
│ │
└─────────┬─────────┘
▼
AI investigation
推荐的QA工作流程
在“推荐的质量保障工作流程”阶段,应在修改代码之前明确输入内容、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。相比庞大的脚本,更应采用小型且可测试的单元。当某个步骤失败时,故障原因应能指向单一责任主体,而非复杂的流程链。应在网关处进行身份验证,在数据层再次授权——仅凭承载令牌并不足以界定租户边界。
第一阶段 — 生成
在第一阶段的生成阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。 在网关处进行身份验证,在数据层面重新授权。仅凭承载令牌并不足以界定租户边界。 在第一阶段的生成阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个操作人员可审计的位置,无需查看整个系统结构。
Requirement
↓
AI
↓
k6 script
第二阶段 — 验证
在进入第二阶段的验证环节时,首先需明确合同规范:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合要求。 同时记录正常流程与异常恢复路径。重试机制、人工审核环节以及错误消息处理都是产品功能的一部分,而非后续需要补充的内容。 需为每次调用记录工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试过程将会浪费大量时间。
k6 script
↓
Validation
↓
Fix obvious errors
第三阶段 — 安全运行
在开展第三阶段的“安全运行”阶段时,首先需记录下相关契约:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合约定。 建议使用小型、可测试的单元,而非冗长的脚本。当某个步骤失败时,故障应能指向单一的责任模块,而非复杂的流程链。 需为每次调用记录工具名称、参数哈希值、延迟时间以及执行结果。没有这些记录,调试过程将会浪费大量时间。
1 VU
↓
small duration
↓
review
第四阶段 —— 观察
在完成第4阶段的观察工作时,首先需写下相关契约:所需的输入参数、成功标志以及部分失败时的处理方式。这份清单能确保后续的代码修改始终符合约定。 将此阶段视为输入与验证后输出之间的契约。为相关产物命名,明确成功判定标准,杜绝无声的半完成状态。 需记录每次调用的工具名称、参数哈希值、延迟时间以及最终结果。若没有这些记录,调试过程将会浪费大量时间。 在完成第4阶段的观察工作时,首先需写下相关契约:所需的输入参数、成功标志以及部分失败时的处理方式。这份清单能确保后续的代码修改始终符合约定。 应将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一个位置,以便操作人员无需查看整个系统结构即可进行审计。
k6
↓
Prometheus
Loki
Dashboards
第5阶段 —— 调查
将第五阶段的“调查”环节视为可度量的界面来处理效果最佳。在扩大范围之前,先记录一份理想的操作流程、一个故障案例以及回滚说明。同时记录正常流程与恢复流程。重试机制、人工审核环节以及错误处理方式都是产品本身的一部分,而非后续需要补充的内容。应提供具有明确结构规范和清晰副作用标识的工具,这样主机在自动批准之前就能知道哪些调用会改变状态。
Performance failure
+
Infrastructure telemetry
+
Application logs
↓
Investigation
第六阶段 — 自动化
将第六阶段的自动化流程视为可度量的界面来处理效果最佳。在扩大范围之前,先收集一份理想的测试用例、一个故障案例以及回滚说明。 相比庞大的脚本,应优先选择小型且可测试的单元。当某个步骤出现故障时,故障原因应能明确指向某个特定责任方,而非复杂的流程链。 使用结构清晰、带有明确副作用标注的工具。主机需要在自动批准之前知道哪些调用会改变系统状态。
下一步……
“下一步该往哪走”这一阶段在被视为可度量的工作面时效果最佳。在扩大范围之前,需记录一份理想的处理结果、一个失败案例以及回滚说明。 应将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,绝不允许默许部分完成的情况。 应使用具有严格结构定义且带有明确副作用标注的工具。主机需要在自动批准之前知道哪些调用会改变系统状态。 “下一步该往哪走”这一阶段在被视为可度量的工作面时效果最佳。在扩大范围之前,需记录一份理想的处理结果、一个失败案例以及回滚说明。 应将配置信息置于应用程序代码之外。环境文件、密钥存储及功能开关应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。
附加内容 — 有用提示
在“额外有用提示”阶段,应在修改代码之前明确输入内容、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理都是产品的一部分,而非后续需要完善的内容。 当下一步操作为代码编写或工具调用时,应优先使用具有结构化格式且经过模式验证的输出,而非自由形式的文字描述。
生成测试用例
在“生成测试”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。相比冗长的脚本,更应采用小型、易于测试的单元。当某个步骤失败时,故障原因应能明确指向某个特定职责,而非整个复杂的流程。应在网关处进行身份验证,在数据层再次授权——仅凭承载令牌并不足以界定租户边界。
验证
在“验证”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功判定条件,并拒绝默许的半完成状态。 在网关处进行身份认证,在数据层面重新授权。仅凭承载令牌并不足以界定租户边界。 在“验证”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个操作人员可审计的位置,无需查看整个系统结构。
调查失败的测试
在处理“调查测试失败”阶段时,首先记下相关契约:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改不会偏离原定方向。 同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理方式都是产品本身的一部分,而非后续需要补充的功能。 需为每次调用记录工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试代理将陷入无止境的循环,耗费大量时间。
与指标关联
在“与指标关联”阶段工作时,首先列出相关要求:所需输入、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 优先选择小型、可测试的单元,而非庞大的脚本。当某个步骤失败时,故障应能指向单一责任模块,而非复杂的流程链。 需为每次调用记录工具名称、参数哈希值、延迟时间以及执行结果。没有这些记录,调试代理将陷入无休止的循环,耗费大量时间。
分析日志
在处理“调查日志”阶段时,首先需写明契约内容:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功判定标准,杜绝无声的半完成状态。 需记录每次调用的工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试代理将陷入无止境的循环,耗费大量时间。 在处理“调查日志”阶段时,首先需写明契约内容:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 应将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。
比较运行结果
将“比较运行阶段”视为可度量的对象来处理,其效果最佳。在扩大范围之前,先记录一个成功的测试用例、一个失败案例以及回滚说明。同时记录正常流程和恢复流程的文档。重试机制、人工审核环节以及死信处理都是产品本身的一部分,而非后续需要补充的内容。应提供具有明确结构规范和清晰副作用标识的工具,这样主机才能在自动批准之前知道哪些调用会改变状态。
生成报告
将“生成报告”阶段视为可度量的工作面时效果最佳。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。相比庞大的脚本,应优先使用小型且可测试的单元。当某一步骤失败时,故障应指向单一责任点,而非复杂的流程链。需使用结构明确的工具,并标注清晰的副作用信息。主机在自动批准之前必须知道哪些调用会修改状态。
操作检查清单
在处理操作检查清单阶段时,首先明确契约内容:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。
在功能结果之外,还需记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。