资讯详情

资讯详情

如何搭建 k6 + Grafana 性能测试实时监控仪表盘:从零到曲线生长只要 3 条命令

如何搭建 k6 Grafana 性能测试实时监控仪表盘从零到曲线生长只要 3 条命令【免费下载链接】k6A modern load testing tool, using Go and JavaScript项目地址: https://gitcode.com/GitHub_Trending/k6/k6刚跑完一轮 k6 压测终端里滚过的只剩一行行数字响应时间到底涨没涨、错误是什么时候冒出来的全靠最后那个汇总回忆。这篇指南用 k6JavaScript 写用例、Go 写内核的负载测试工具搭配 InfluxDB 和 Grafana 这套开源组合3 条命令搭起实时性能测试仪表盘——压测跑到一半浏览器里的曲线就在同步生长哪一秒变慢、哪一批请求挂了一眼就能指出来。场景盯着终端数字还是不知道卡在哪一步压测最难受的时刻是问题正在发生你却看不见。终端告诉你有 5 个 VU 在干活但回答不了响应耗时是稳定在 200ms 附近还是从第 30 秒开始一级一级往上爬checks 通过率是全程 100%还是某 10 秒间突然塌了下去这些答案都藏在指标 × 时间里而纯终端输出只给你瞬时快照。把指标实时画成曲线之后卡在哪一步才变成一个可以指着图讨论的问题。一句话看全貌三个角色一条数据流整条链路只有三个角色各司其职k6发压并产生指标。响应时间、虚拟用户数、检查通过率这些内置指标定义在 metrics/builtin.goInfluxDB负责存。它是时序数据库——专门存随时间变化的数字的数据库天然适合压测指标这种高频打点数据Grafana负责画。它定时查询 InfluxDB 里的同一份数据把数字变成实时曲线。k6 通过一个命令行参数把指标直接写进 InfluxDBGrafana 再从同一个库里读于是发压和看盘是同步的。数据导出由 k6 自带的输出模块实现仓库里还附带拼好的容器化示例不用自己写配置。实操3 条命令拉起环境并点亮仪表盘前提是本机已装好 Docker、Docker Compose 和 k6 命令行。第 1 步克隆仓库拿到现成的可视化示例git clone https://gitcode.com/GitHub_Trending/k6/k6做完这步你会得到 examples/docker-compose/influxdb-v1/ 目录里面有拼好的docker-compose.yml、预配置的 Grafana 数据源和性能测试仪表盘以及一个开箱即用的script.js。第 2 步一条命令拉起 InfluxDB 和 Grafanacd k6/examples/docker-compose/influxdb-v1 docker-compose up -d这份编排做了三件事InfluxDB 监听 8086 端口并自动创建名为k6的数据库Grafana 开放 3000 端口、开启匿名管理员登录grafana/目录下的配置文件把数据源和面板一次性挂好你不需要手动点任何添加数据源。做完这步你应该看到docker-compose ps里两个容器都是 Up浏览器打开http://localhost:3000/d/Le2Ku9NMk/k6-performance-test能看到一块空的 k6 性能测试仪表盘——它正在等数据。第 3 步跑 k6把指标写进 InfluxDBk6 -i 20 --vus 5 --out influxdbhttp://localhost:8086/k6 run script.js这条命令让 5 个虚拟用户共发起 20 次请求对示例站点做 GET并顺带断言状态码是 200协议是 HTTP/2。整条命令里唯一需要记住的是--out它告诉 k6 把指标写到http://localhost:8086/k6也就是 InfluxDB 的k6库。做完这步你应该看到终端滚动出实时请求流此时刷新 Grafana 页面空面板上开始出现vus和http-req duration两条曲线并且随测试进行持续生长。面板怎么读判断系统正不正常的 3 个信号 k6 导出的指标不少新手盯住下面三个就够下判断每个都按正常形态 vs 异常形态对照着看vus虚拟用户数正常形态是一条贴合压测设定的平线——本例固定 5就该是平线一旦出现剧烈波动或突然归零说明脚本中途挂了或执行模型变了先回终端查错误。http_req_duration响应时间正常是一段稳定、窄幅的波动带是判断瓶颈的核心一旦出现持续抬高的台阶或尖刺说明目标服务开始变慢对照你设的阈值比如 p95 500ms判断是否越线。checks检查通过率正常接近 100%出现下凹意味着有请求没达标配合终端里的失败项定位是哪个断言挂了。还有个容易忽略的读数顺序先看 vus 确认压力如预期再看吞吐类指标确认请求真发出去了最后才看耗时。顺序反了容易把根本没发压误诊成系统变快了。快速排障屏幕不动的 3 种常见情况 ️面板全程空白→ 原因漏了--out参数或写入地址里的库名和 InfluxDB 实际库名对不上本例库名是k6。 → 解法核对命令含--out influxdbhttp://localhost:8086/k6再用docker-compose logs influxdb确认数据库初始化成功。k6 一启动就报连不上输出端点→ 原因docker-compose up -d之后容器还在拉镜像或启动中8086 端口尚未就绪。 → 解法跑docker-compose ps等两个容器都显示 Up 再执行 k6。曲线太平滑只有寥寥几个点→ 原因示例只发 20 次请求总时长可能不足几秒样本太少画不出形态。 → 解法加大-i或改用duration 30s之类的时长配置把观察窗口拉长。延伸从能看到到会报警两个方向点到为止把阈值变成硬判定。在脚本的options.thresholds里声明http_req_duration: [p(95)500]越线时 k6 以非零退出码结束天然适合接进 CI写法可参考 examples/thresholds.js。自定义指标 自定义面板。用new Trend(my_metric)创建自己的指标比如下单接口耗时它会和内置指标一样进 InfluxDB之后只需在 Grafana 新建面板、把查询改成你的指标名。想要更完整的参数说明和全部内置指标列表可以查阅 k6 与 Grafana 的官方文档同一套压测引擎 时序存储 可视化的思路仓库里还有一份 OpenTelemetry 版示例examples/docker-compose/opentelemetry/换个存储照着跑一遍即可。【免费下载链接】k6A modern load testing tool, using Go and JavaScript项目地址: https://gitcode.com/GitHub_Trending/k6/k6创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →