SeleniumHQ/docker-selenium 分布式追踪配置详解
2025-07-07 01:40:11作者:邬祺芯Juliet
前言
在现代分布式测试环境中,理解测试执行流程和性能瓶颈变得尤为重要。SeleniumHQ/docker-selenium 项目通过集成 OpenTelemetry 和 Jaeger 提供了强大的分布式追踪能力,本文将深入解析其 docker-compose-v2-tracing.yml 配置文件的实现原理和使用方法。
核心组件介绍
1. Jaeger 服务
Jaeger 是一个开源的端到端分布式追踪系统,用于监控和排查复杂的分布式系统中的问题。在配置中,我们使用 jaegertracing/all-in-one
镜像快速部署 Jaeger 服务:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686" # Jaeger UI 端口
- "4317:4317" # OTLP 接收端口
- 16686端口:提供 Jaeger 的 Web 界面,用于可视化查看追踪数据
- 4317端口:OpenTelemetry Protocol (OTLP) 接收端口,用于接收来自 Selenium 节点的追踪数据
2. Selenium Hub 中心节点
Selenium Hub 是整个测试架构的调度中心,配置如下:
selenium-hub:
image: selenium/hub:4.34.0-20250707
ports:
- "4442:4442" # 事件总线端口
- "4443:4443" # 订阅端口
- "4444:4444" # 标准 Selenium 端口
depends_on:
- jaeger
environment:
- SE_ENABLE_TRACING=true
- SE_OTEL_TRACES_EXPORTER=otlp
- SE_OTEL_EXPORTER_ENDPOINT=http://jaeger:4317
关键环境变量说明:
SE_ENABLE_TRACING=true
:启用分布式追踪功能SE_OTEL_TRACES_EXPORTER=otlp
:指定使用 OTLP 协议导出追踪数据SE_OTEL_EXPORTER_ENDPOINT
:指定 Jaeger 服务的 OTLP 接收地址
3. 浏览器节点
配置文件包含了三种主流浏览器的节点配置:Chrome、Edge 和 Firefox。以 Chrome 节点为例:
chrome:
image: selenium/node-chrome:4.34.0-20250707
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_ENABLE_TRACING=true
- SE_OTEL_TRACES_EXPORTER=otlp
- SE_OTEL_EXPORTER_ENDPOINT=http://jaeger:4317
ports:
- "6900:5900" # VNC 端口
所有浏览器节点共享相同的追踪配置模式,确保整个测试流程的完整追踪。
部署与使用指南
1. 启动服务
执行以下命令启动完整的分布式追踪环境:
docker compose -f docker-compose-v2-tracing.yml up
如需后台运行,添加 -d
参数:
docker compose -f docker-compose-v2-tracing.yml up -d
2. 访问服务
- Selenium Grid:通过
http://localhost:4444
访问 - Jaeger UI:通过
http://localhost:16686
访问 - 浏览器节点 VNC:
- Chrome: 6900 端口
- Edge: 6901 端口
- Firefox: 6902 端口
3. 停止服务
docker compose -f docker-compose-v2-tracing.yml down
追踪数据分析
当测试执行时,所有节点(Hub 和浏览器节点)都会生成追踪数据并发送到 Jaeger。在 Jaeger UI 中,你可以:
- 查看完整的测试执行链路
- 分析每个操作的耗时
- 识别性能瓶颈
- 排查跨服务/节点的问题
性能优化建议
- 共享内存配置:每个浏览器节点配置了 2GB 的共享内存(
shm_size: 2gb
),这对于浏览器稳定运行至关重要 - 网络拓扑:确保所有容器位于同一 Docker 网络中,减少网络延迟对追踪数据的影响
- 采样率:在生产环境中,可能需要调整追踪数据的采样率以避免性能开销
常见问题排查
-
追踪数据不显示:
- 确认所有服务的
SE_ENABLE_TRACING
环境变量设置为 true - 检查 Jaeger 服务是否正常运行
- 验证网络连接,确保节点可以访问 Jaeger 的 4317 端口
- 确认所有服务的
-
性能下降:
- 考虑减少追踪数据的采样率
- 检查 Jaeger 的资源使用情况
结语
通过 docker-compose-v2-tracing.yml 配置,SeleniumHQ/docker-selenium 项目提供了开箱即用的分布式追踪解决方案,极大简化了复杂测试环境的监控和调试工作。合理利用这一功能,可以显著提升测试效率和质量保障能力。