SuperAPI AI 工具集

troubleshooting-astro-deployments

部署与运维

查看项目

更新于 10-14 20:09

技能介绍

用途

本技能帮助使用 Astro CLI 诊断和排查 Astronomer 生产部署的问题,主要面向调查部署故障、查看生产日志、分析失败原因等场景。部署管理可参考 managing-astro-deployments 技能,本地开发可参考 managing-astro-local-env 技能。

主要能力

快速健康检查

以以下命令开始获取概览:

# 1. 列出部署以找到目标
astro deployment list

# 2. 获取部署概览
astro deployment inspect <DEPLOYMENT_ID>

# 3. 检查错误
astro deployment logs <DEPLOYMENT_ID> --error -c 50

查看部署日志

使用 -c 控制日志条数(默认 500)。日志标志不能组合使用——每条命令只使用一个组件或级别标志。

按组件查看日志:

# Scheduler 日志(DAG 处理、任务调度)
astro deployment logs <DEPLOYMENT_ID> --scheduler -c 50

# Worker 日志(任务执行)
astro deployment logs <DEPLOYMENT_ID> --workers -c 30

# Webserver 日志(UI 访问、健康检查)
astro deployment logs <DEPLOYMENT_ID> --webserver -c 30

# Triggerer 日志(可延迟操作符)
astro deployment logs <DEPLOYMENT_ID> --triggerer -c 30

按日志级别过滤:

# 仅错误日志(排查时最有用)
astro deployment logs <DEPLOYMENT_ID> --error -c 30

# 警告日志
astro deployment logs <DEPLOYMENT_ID> --warn -c 50

# 信息级日志
astro deployment logs <DEPLOYMENT_ID> --info -c 50

搜索日志:

# 搜索特定错误
astro deployment logs <DEPLOYMENT_ID> --keyword "ConnectionError"

# 搜索特定 DAG
astro deployment logs <DEPLOYMENT_ID> --keyword "my_dag_name" -c 100

# 查找导入错误
astro deployment logs <DEPLOYMENT_ID> --error --keyword "ImportError"

# 查找任务失败
astro deployment logs <DEPLOYMENT_ID> --error --keyword "Task failed"

使用方式

完整调查工作流

步骤 1:识别问题

# 列出部署及其状态
astro deployment list

# 获取部署详情
astro deployment inspect <DEPLOYMENT_ID>

关注:状态(HEALTHY 与 UNHEALTHY)、运行时版本兼容性、资源限制(CPU、内存)、最近部署时间戳。

步骤 2:检查错误日志

astro deployment logs <DEPLOYMENT_ID> --error -c 50

关注:重复出现的错误模式、特定 DAG 反复失败、导入错误或语法错误、连接或凭据错误。

步骤 3:查看 Scheduler 日志

astro deployment logs <DEPLOYMENT_ID> --scheduler -c 30

关注:DAG 解析错误、调度延迟、任务排队问题。

步骤 4:检查 Worker 日志

astro deployment logs <DEPLOYMENT_ID> --workers -c 30

关注:任务执行失败、资源耗尽、超时错误。

步骤 5:验证配置

# 检查环境变量
astro deployment variable list --deployment-id <DEPLOYMENT_ID>

# 验证部署设置
astro deployment inspect <DEPLOYMENT_ID>

关注:缺失或不正确的环境变量、密钥配置(AIRFLOW__SECRETS__BACKEND)、连接配置。

常见调查模式

重复性 DAG 失败:按上述完整调查工作流执行,然后缩小到特定 DAG:

astro deployment logs <DEPLOYMENT_ID> --keyword "my_dag_name" -c 100

资源问题:

# 1. 检查部署资源分配
astro deployment inspect <DEPLOYMENT_ID>
# 关注:resource_quota_cpu、resource_quota_memory
# Worker 队列:max_worker_count、worker_type

# 2. 检查 worker 扩缩容问题
astro deployment logs <DEPLOYMENT_ID> --workers -c 50

# 3. 查找内存溢出错误
astro deployment logs <DEPLOYMENT_ID> --error --keyword "memory"

配置问题:

# 1. 查看环境变量
astro deployment variable list --deployment-id <DEPLOYMENT_ID>

# 2. 检查密钥后端配置
# 关注:AIRFLOW__SECRETS__BACKEND、AIRFLOW__SECRETS__BACKEND_KWARGS

# 3. 验证部署设置
astro deployment inspect <DEPLOYMENT_ID>

# 4. 检查 webserver 日志中的认证问题
astro deployment logs <DEPLOYMENT_ID> --webserver -c 30

导入错误:

# 1. 查找导入错误
astro deployment logs <DEPLOYMENT_ID> --error --keyword "ImportError"

# 2. 检查 scheduler 的解析失败
astro deployment logs <DEPLOYMENT_ID> --scheduler --keyword "Failed to import" -c 50

# 3. 验证依赖是否已部署
astro deployment inspect <DEPLOYMENT_ID>
# 检查:current_tag、最近部署时间戳

环境变量管理

列出变量:

# 列出部署的所有变量
astro deployment variable list --deployment-id <DEPLOYMENT_ID>

# 查找特定变量
astro deployment variable list --deployment-id <DEPLOYMENT_ID> --key AWS_REGION

# 导出变量到文件
astro deployment variable list --deployment-id <DEPLOYMENT_ID> --save --env .env.backup

创建变量:

# 创建普通变量
astro deployment variable create --deployment-id <DEPLOYMENT_ID> \
  --key API_ENDPOINT \
  --value https://api.example.com

# 创建密钥(在 UI 和日志中掩码显示)
astro deployment variable create --deployment-id <DEPLOYMENT_ID> \
  --key API_KEY \
  --value secret123 \
  --secret

更新变量:

astro deployment variable update --deployment-id <DEPLOYMENT_ID> \
  --key API_KEY \
  --value newsecret

删除变量:

astro deployment variable delete --deployment-id <DEPLOYMENT_ID> --key OLD_KEY

注意:变量作为环境变量对 DAG 可用。更改无需重新部署。

deployment inspect 的关键指标

排查时重点关注以下字段:

  • status:HEALTHY 与 UNHEALTHY
  • runtime_version:Airflow 版本兼容性
  • scheduler_size / scheduler_count:Scheduler 容量
  • executor:CELERY、KUBERNETES 或 LOCAL
  • worker_queues:Worker 扩缩容限制与类型
  • min_worker_count、max_worker_count
  • worker_concurrency
  • worker_type(资源类别)
  • resource_quota_cpu / memory:整体资源限制
  • dag_deploy_enabled:是否支持仅 DAG 部署
  • current_tag:上次部署版本
  • is_high_availability:是否启用冗余

调查最佳实践

  • 始终从错误日志开始——最明显的失败会出现在这里。
  • 在错误日志中检查模式——同一 DAG 反复失败?是否有时间规律?
  • 按组件排查:Worker 日志 → 任务执行细节;Scheduler 日志 → DAG 处理与调度;Webserver 日志 → UI 问题与健康检查;Triggerer 日志 → 可延迟操作符问题。
  • 使用 --keyword 进行定向搜索——比通读全部日志更高效。
  • inspect 命令是健康仪表盘——先检查它。
  • inspect 输出中的环境变量——可能揭示配置问题。
  • 日志条数默认为 500——根据需要调整 -c。
  • 不要忘记检查部署时间——最近的部署可能引入了问题。

排查速查表

症状 命令
部署显示 UNHEALTHY astro deployment inspect <ID> + --error 日志
DAG 未出现 --error 日志查找导入错误,检查 --scheduler 日志
任务失败 --workers 日志 + 用 --keyword 搜索 DAG
调度缓慢 --scheduler 日志 + 检查 inspect 中的 scheduler 资源
UI 无响应 --webserver 日志
连接问题 检查变量,在日志中搜索连接名
导入错误 --error --keyword "ImportError" + --scheduler 日志
内存溢出 inspect 查看资源 + --workers --keyword "memory"

相关技能

  • managing-astro-deployments:创建、更新、删除部署,部署代码
  • managing-astro-local-env:管理本地 Airflow 开发环境
  • setting-up-astro-project:初始化并配置 Astro 项目

限制

资料来源未提供技能本身的安装方法、版本要求、权限或收费信息。