如何获取Dataflow中worker_status.py生成的诊断数据?
获取Dataflow Streaming Worker的诊断信息(thread dump、heap dump等)
要启用并访问apache_beam/runners/worker/worker_status.py提供的诊断数据,按以下步骤操作:
1. 启用Worker状态端点
提交Dataflow管道时,需要指定两个关键配置:
- 添加实验参数开启功能:
--experiments=enable_worker_status_endpoint - 通过环境变量指定服务端口(默认8091,可自定义):
--environment_variables=BEAM_WORKER_STATUS_PORT=8091
2. 访问诊断数据
Dataflow Worker默认部署在VPC内网,访问方式分两种:
直接VPC访问
如果拥有Worker所在VPC的访问权限,可直接通过Worker内网IP+指定端口访问对应端点:
- Thread dump:
http://<worker-internal-ip>:8091/threadDump - Heap dump:
http://<worker-internal-ip>:8091/heapDump - State缓存统计:
http://<worker-internal-ip>:8091/stateCacheStats - 活跃处理Bundle状态:
http://<worker-internal-ip>:8091/activeProcessingBundles
SSH隧道访问(无直接VPC权限时)
通过Cloud SDK建立SSH隧道转发端口,在本地访问:
- 给Worker实例配置SSH密钥(可通过GCP控制台或
gcloud compute project-info add-metadata提前设置) - 执行隧道命令:
gcloud compute ssh <worker-instance-name> --zone=<worker-zone> --ssh-flag="-L 8091:localhost:8091" - 本地用浏览器或curl访问:
http://localhost:8091/<target-endpoint>(比如http://localhost:8091/threadDump)
3. 注意事项
- 该功能属于实验性特性,Beam 2.30及以上版本支持,不同版本可能存在细节差异
- Heap dump文件体积较大,频繁触发可能影响Worker性能,建议在低负载时段操作
- 所有端点返回JSON格式数据,便于后续脚本解析或可视化处理
内容的提问来源于stack exchange,提问作者Gergely
相关产品推荐
相关产品推荐

