在GCP Composer中调试损坏的dag

时间:2019-08-24 06:10:56

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

我已阅读question for vanilla Airflow

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

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

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

2 个答案:

答案 0 :(得分:1)

要确定触发DAG时发生的运行时问题,您可以始终像查看任何典型的Airflow安装一样查看任务日志。可以使用Web UI或在Cloud Composer环境的关联Cloud Storage存储桶中的关联日志文件夹中找到这些文件。

要在解析时识别问题,可以使用gcloud composer执行Airflow命令。例如,要运行airflow list_dags,等效的gcloud CLI将是:

$ gcloud composer environments --location=$REGION run $ENV_NAME -- list_dags --report

请注意,第二个--是有意的。这样,命令参数解析器可以区分gcloud的参数和要传递给Airflow子命令的参数(在这种情况下为list_dags)。

答案 1 :(得分:1)

正如hexacynide所指出的,您可以查看任务日志-Composer文档中有有关执行此操作的详细信息,here是特别发现的。您还可以使用Stackdriver logging,它在Composer项目中默认启用。在Stackdriver日志中,您可以过滤许多变量上的日志,包括按时间,按Pod(气流工作人员,气流Web服务器,气流调度程序等)以及您怀疑可能出现在日志中的任何关键字。

编辑:添加屏幕截图并更清晰地响应问题更新

在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