google-cloud-platform - 在 GCP Composer 中调试损坏的 dags

标签 google-cloud-platform airflow google-cloud-composer

我已阅读 question for vanilla Airflow

如何在 Google Cloud Composer 中有效调试损坏的 DAG?
如何查看损坏的 DAG 的完整日志?

现在我只能在 Airflow UI 主页上看到一行跟踪信息。

编辑:
答案似乎不理解我的问题
我正在寻找修复损坏的 DAG,即 DAG 甚至没有出现在 DAG 列表中,当然没有任务正在运行,也没有任务日志可供查看。

最佳答案

正如 hexacynide 所指出的,您可以查看任务日志 - Composer 文档中有关于具体执行此操作的详细信息 here 。您还可以使用Stackdriver logging ,在 Composer 项目中默认启用。在 Stackdriver 日志中,您可以根据许多变量过滤日志,包括按时间、按 pod(airflow-worker、airflow-webserver、airflow-scheduler 等)以及您怀疑日志中可能出现的任何关键字。

编辑:添加屏幕截图并提高清晰度以响应问题更新

在 Airflow 中,当 DAG 损坏时,顶部通常会出现某种形式的错误消息。 (是的,我知道这个错误消息很有帮助,我不需要进一步调试,但我只是为了展示如何做)

在消息中,我可以看到我的 DAG bq_copy_across_locations 已损坏。

Airflow Web UI with "Broken DAG" Error message

为了进行调试,我转到 Stackdriver,并搜索我的 DAG 的名称。我将结果限制为来自此 Composer 环境的日志。如果需要,您还可以限制时间范围。

Stackdriver logs with DAG name in search bar

我查看了错误日志,发现了损坏的 DAG 的回溯错误。

Logs with traceback line highlighted

或者,如果您知道只想搜索堆栈回溯,则可以运行高级过滤器来查找 DAG 名称和“traceback”一词。为此,请点击 Stackdriver 日志栏右侧的箭头,然后点击“转换为高级过滤器”

Stackdriver logs with arrow pointing to convert to advance filter

然后输入您的高级过滤器

resource.type="cloud_composer_environment"
resource.labels.location="YOUR-COMPOSER-REGION"
resource.labels.environment_name="YOUR-ENV-NAME"
("BROKEN-DAG-NAME" AND
"Traceback")

这就是我的高级搜索的样子

Advanced filter for traceback logs

将返回的唯一日志是该 DAG 的堆栈回溯日志。

Tracebacks in Stackdriver logs

关于google-cloud-platform - 在 GCP Composer 中调试损坏的 dags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57635541/

相关文章:

google-compute-engine - Kubernetes pod 自动缩放与实例组自动缩放不同步

python - Django/谷歌云 : FATAL: database <db> does not exist/Server Error 500

logging - Airflow KubernetesPodOperator 1.10.12 - 记录了任务启动信息,但没有来自容器的标准输出

python - Airflow:PythonOperator 的 python_callable 中的外部 python

python - 如何从谷歌云 Composer 调用云功能?

linux - 将 erigon 主网存档节点部署到 GKE 集群

kubernetes/了解 CPU 资源限制

python - Airflow DAG 预定日期晚了一周

python - Airflow/Composer - 在 zip 打包的 DAG 中找不到模板

google-cloud-platform - 更改 Cloud Composer 的 DAG 的默认 GCS 位置