首页
/ SeleniumHQ/docker-selenium 分布式追踪配置详解

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 中,你可以:

  1. 查看完整的测试执行链路
  2. 分析每个操作的耗时
  3. 识别性能瓶颈
  4. 排查跨服务/节点的问题

性能优化建议

  1. 共享内存配置:每个浏览器节点配置了 2GB 的共享内存(shm_size: 2gb),这对于浏览器稳定运行至关重要
  2. 网络拓扑:确保所有容器位于同一 Docker 网络中,减少网络延迟对追踪数据的影响
  3. 采样率:在生产环境中,可能需要调整追踪数据的采样率以避免性能开销

常见问题排查

  1. 追踪数据不显示

    • 确认所有服务的 SE_ENABLE_TRACING 环境变量设置为 true
    • 检查 Jaeger 服务是否正常运行
    • 验证网络连接,确保节点可以访问 Jaeger 的 4317 端口
  2. 性能下降

    • 考虑减少追踪数据的采样率
    • 检查 Jaeger 的资源使用情况

结语

通过 docker-compose-v2-tracing.yml 配置,SeleniumHQ/docker-selenium 项目提供了开箱即用的分布式追踪解决方案,极大简化了复杂测试环境的监控和调试工作。合理利用这一功能,可以显著提升测试效率和质量保障能力。