在 Data Flow 中调试流
如果流无法部署
- 确保使用的是特定发行版本的最新 GA 版本
- 确保您选择平台至少满足最低支持版本
- 在 SCDF 中部署流应用程序之前,请确保该应用程序已作为独立应用程序成功运行。在继续之前,请参阅调试流应用程序。
Skipper 负责部署流。流部署失败消息通常可以在 Skipper 应用程序日志中找到。
本指南的其余部分分为每个平台的部分
- 本地
- Cloud Foundry
- Kubernetes
本地
本节介绍如何在本地环境中调试常见的部署问题。
下图显示了本地环境中部署问题的典型调试过程。
您可以逐个应用程序地检查应用程序日志文件。要将所有应用程序的日志聚合到一个文件中,您可以设置 inheritLogging=true
部署器属性。有关更多信息,请参阅“是否可以将本地部署聚合到单个日志中?”,有关如何启用更多日志输出的信息,请参阅“如何为平台部署启用 DEBUG 日志?”。
您可以通过设置 debugPort
部署器属性来使用 JDWP 调试应用程序。有关更多信息,请参阅“如何远程调试已部署的应用程序?”。
Docker Compose - 启动
下图显示了本地环境中 Docker Compose 启动问题的典型调试过程。
DATAFLOW_VERSION
和 SKIPPER_VERSION
环境变量必须通过 export
或在 docker-compose
命令前添加前缀的方式在当前终端环境中可用。有关更多信息,请参阅启动 Docker Compose。
Docker Compose - 运行时
下图显示了本地环境中 Docker Compose 运行时问题的典型调试过程。
默认情况下,分配给 Docker 的内存量可能过低。建议分配的内存量为 8GB。docker stats
命令可以提供有关资源使用情况的有用信息。如果应用程序由于资源限制而无法部署,请增加资源分配。请参阅您平台的Docker 文档。
由于流是通过 Skipper 部署的,因此作为该流一部分的应用程序将作为 Java 进程在 Skipper 容器上启动。对于流的每个部分,都会部署一个应用程序。提供给 Docker 的总体资源分配(内存、CPU 等)应考虑已部署应用程序的数量。有关查看日志文件的更多信息,请参阅查看流日志。
Cloud Foundry
本节介绍如何调试 Cloud Foundry 上常见的部署问题。
启动失败
下图显示了 Cloud Foundry 上启动失败的典型调试过程
应用程序失败
下图显示了 Cloud Foundry 上应用程序失败的典型调试过程
调试部署问题时,提高部署程序和 Cloud Foundry 相关的日志级别可能会有所帮助。有关更多信息,请参阅“如何为平台部署启用 DEBUG 日志?”。
Kubernetes
本节介绍如何调试 Kubernetes 上常见的部署问题。
分布式部署文件
下图显示了 Kubernetes 上分布式部署文件的典型调试过程
Helm 图表
下图显示了 Kubernetes 上 Helm 图表的典型调试过程
常规
下图展示了 Kubernetes 上常见问题的一般调试流程
在描述 Pod 时,“events
”表部分提供了调试时的有用信息,可以通过以下命令调用
kubectl describe po/pod_name
例如,成功部署的 time
应用程序的事件类似于以下内容
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m default-scheduler Successfully assigned default/ticktock-time-v16-869947b6b9-brfc4 to minikube
Normal Pulled 2m kubelet, minikube Container image "springcloudstream/time-source-rabbit:3.2.1" already present on machine
Normal Created 2m kubelet, minikube Created container
Normal Started 2m kubelet, minikube Started container
可以使用以下命令实时查看应用程序日志(其中 pod_name
是您的 Pod 的名称)
kubectl logs -f po/pod_name
故障排除帮助
如果这些故障排除技术都没有帮助,并且您仍然需要帮助,请在 StackOverflow 上联系我们,并提供相关详细信息(请参阅:Wiki)。我们会积极关注论坛帖子。