用途
本技能帮助使用 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 项目
限制
资料来源未提供技能本身的安装方法、版本要求、权限或收费信息。