一、架构设计背景
在执行高并发负载测试时,单纯依靠 Locust 默认的 Web UI 存在几个明显的局限:
- 指标维度单一:默认面板主要展示请求数、失败率和平均响应时间,无法实时关联被测系统的 CPU、内存利用率与网络 I/O。
- 缺乏历史回溯:压测一旦停止或重启,历史瞬时波动数据容易丢失,不利于多轮次基线对比。
- 报警协同能力弱:无法基于指标阈值联动企业微信或钉钉告警。
通过构建 Locust + Exporter + Prometheus + Grafana 监控监控链路,可以将压测客户端指标、系统硬件指标汇聚至时序数据库,实现企业级压测大盘观测。
text
┌─────────────────┐ ┌─────────────────────────┐
│ Locust 压测机 │ ───► │ locust-metrics-exporter │ ───┐
└─────────────────┘ └─────────────────────────┘ │
│ Pull 指标
┌─────────────────┐ ┌─────────────────────────┐ │ (15s 间隔)
│ 被测 Linux 节点 │ ───► │ node-exporter │ ───┼──► ┌────────────┐ ┌─────────┐
└─────────────────┘ └─────────────────────────┘ │ │ Prometheus │ ────► │ Grafana │
│ └────────────┘ └─────────┘
│ ▲
└───────────────────────────┘二、Docker Compose 极速编排配置
使用 docker-compose.yml 统一拉起整个监控支撑套件:
yaml
version: '3.8'
services:
# 1. 宿主机硬件指标采集器
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
network_mode: "host"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
restart: unless-stopped
# 2. Locust 指标转换适配器
locust-metrics-exporter:
image: containersol/locust_exporter
network_mode: "host"
environment:
# 指向实际运行 Locust Web 服务的监听地址
- LOCUST_EXPORTER_URI=http://127.0.0.1:8089
restart: unless-stopped
# 3. Prometheus 时序数据库
prometheus:
image: prom/prometheus:latest
container_name: prometheus
network_mode: "host"
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.retention.time=15d
volumes:
- ./configs/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./data/prometheus:/prometheus
restart: always
# 4. Grafana 可视化面板
grafana:
image: grafana/grafana:latest
container_name: grafana
network_mode: "host"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=your_secure_password
volumes:
- ./data/grafana:/var/lib/grafana
restart: always三、Prometheus 抓取配置(prometheus.yml)
在 ./configs/prometheus.yml 中声明数据采集作业:
yaml
global:
scrape_interval: 15s # 抓取间隔
evaluation_interval: 15s
scrape_configs:
# 监控 Prometheus 自身
- job_name: 'prometheus'
static_configs:
- targets: ['127.0.0.1:9090']
# 监控 Linux 宿主机物理指标
- job_name: 'node_exporter'
static_configs:
- targets: ['127.0.0.1:9100']
# 监控 Locust 实时压测状态
- job_name: 'locust'
static_configs:
- targets: ['127.0.0.1:9646'] # locust_exporter 默认监听端口启动编排服务:
bash
docker compose up -d四、Grafana 仪表盘导入与核心观测面板
- 打开浏览器访问
http://<server-ip>:3000,输入管理员账号密码登录; - 在 Data Sources 中添加 Prometheus,URL 填入
http://127.0.0.1:9090并保存测试连通; - 在 Dashboards -> Import 中导入官方推荐的 Locust 看板(模板 ID:
11985或12051):- RPS 吞吐曲线:实时展示总请求速率与每秒失败请求走势;
- 响应耗时热力图:展示 P50、P90、P99 分位数的延迟分布;
- 活动并发用户数(Active Users):实时反映加压梯度与 Worker 协同状态;
- 关联系统监控看板(Dashboard ID: 8919):同步对照测试期间服务端 CPU、内存与磁盘 I/O 的压测拐点。