在 GCP Composer 中调试损坏的 dag
Debugging broken dags in GCP Composer
我已阅读。
如何在 Google Cloud Composer 中有效调试损坏的 DAG?
如何查看损坏的 DAG 的完整日志?
现在我只能在 Airflow UI 主页中看到一行跟踪。
编辑:
答案似乎是不理解我的问题。
我正在寻找修复 损坏的 DAG 即 DAG 甚至没有出现在 DAG 列表中,当然没有任务 运行 也没有任务日志可供查看。
要确定触发 DAG 时发生的 运行 时间问题,您始终可以像查看任何典型的 Airflow 安装一样查看任务日志。这些可以通过网络 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
)。
正如 hexacynide 所指出的,您可以查看任务日志 - Composer 文档中有关于具体执行该操作的详细信息 here. You can also use Stackdriver logging,它在 Composer 项目中默认启用。在 Stackdriver 日志中,您可以根据许多变量过滤日志,包括按时间、pod(airflow-worker、airflow-webserver、airflow-scheduler 等)以及您怀疑可能出现在日志中的任何关键字。
编辑:添加屏幕截图并更加清晰地响应问题更新
在 Airflow 中,当 DAG 损坏时,顶部通常会出现某种形式的错误消息。 (是的,我知道这个错误消息很有用,我不需要进一步调试,但我只是想展示如何调试)
在消息中,我可以看到我的 DAG bq_copy_across_locations 已损坏。
为了调试,我转到 Stackdriver,并搜索我的 DAG 的名称。我将结果限制为来自此 Composer 环境的日志。如果需要,您还可以限制时间范围。
我查看了错误日志,发现了损坏的 DAG 的回溯错误。
或者,如果您知道自己只想搜索堆栈回溯,则可以 运行 一个高级过滤器来查找您的 DAG 名称和单词 "traceback"。为此,请点击 Stackdriver 日志栏右侧的箭头并点击 "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")
这是我的高级搜索的样子
将返回的唯一日志将是该 DAG 的堆栈回溯日志。
我已阅读
如何在 Google Cloud Composer 中有效调试损坏的 DAG?
如何查看损坏的 DAG 的完整日志?
现在我只能在 Airflow UI 主页中看到一行跟踪。
编辑:
答案似乎是不理解我的问题。
我正在寻找修复 损坏的 DAG 即 DAG 甚至没有出现在 DAG 列表中,当然没有任务 运行 也没有任务日志可供查看。
要确定触发 DAG 时发生的 运行 时间问题,您始终可以像查看任何典型的 Airflow 安装一样查看任务日志。这些可以通过网络 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
)。
正如 hexacynide 所指出的,您可以查看任务日志 - Composer 文档中有关于具体执行该操作的详细信息 here. You can also use Stackdriver logging,它在 Composer 项目中默认启用。在 Stackdriver 日志中,您可以根据许多变量过滤日志,包括按时间、pod(airflow-worker、airflow-webserver、airflow-scheduler 等)以及您怀疑可能出现在日志中的任何关键字。
编辑:添加屏幕截图并更加清晰地响应问题更新
在 Airflow 中,当 DAG 损坏时,顶部通常会出现某种形式的错误消息。 (是的,我知道这个错误消息很有用,我不需要进一步调试,但我只是想展示如何调试)
在消息中,我可以看到我的 DAG bq_copy_across_locations 已损坏。
为了调试,我转到 Stackdriver,并搜索我的 DAG 的名称。我将结果限制为来自此 Composer 环境的日志。如果需要,您还可以限制时间范围。
我查看了错误日志,发现了损坏的 DAG 的回溯错误。
或者,如果您知道自己只想搜索堆栈回溯,则可以 运行 一个高级过滤器来查找您的 DAG 名称和单词 "traceback"。为此,请点击 Stackdriver 日志栏右侧的箭头并点击 "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")
这是我的高级搜索的样子
将返回的唯一日志将是该 DAG 的堆栈回溯日志。