跳转到内容

Airflow与Grafana集成

来自代码酷

Airflow与Grafana集成[编辑 | 编辑源代码]

介绍[编辑 | 编辑源代码]

Apache Airflow是一个用于编排、调度和监控工作流的平台,而Grafana是一个开源的指标可视化工具。将两者集成可以实现对Airflow任务的实时监控、日志分析和性能优化。本指南将详细介绍如何配置Airflow与Grafana的集成,帮助用户通过可视化仪表盘监控DAG运行状态、任务延迟、资源使用率等关键指标。

前置条件[编辑 | 编辑源代码]

  • 已安装并运行Airflow(建议版本≥2.0)
  • 已部署Grafana(建议版本≥7.0)
  • 熟悉Airflow基础概念(如DAG、Operator)

配置步骤[编辑 | 编辑源代码]

1. 启用Airflow指标导出[编辑 | 编辑源代码]

Airflow通过Prometheus暴露指标数据。需在`airflow.cfg`中启用以下配置:

  
[metrics]  
statsd_on = True  
statsd_host = localhost  
statsd_port = 9125  
statsd_prefix = airflow  

[api]  
enable_experimental_api = True

然后安装Prometheus exporter:

  
pip install 'apache-airflow[statsd]'

2. 配置Prometheus抓取数据[编辑 | 编辑源代码]

在Prometheus的`prometheus.yml`中添加Airflow作业:

  
scrape_configs:  
  - job_name: 'airflow'  
    static_configs:  
      - targets: ['airflow-webserver:8080']  
    metrics_path: '/admin/metrics/'

3. Grafana数据源配置[编辑 | 编辑源代码]

1. 登录Grafana,导航到`Configuration > Data Sources` 2. 添加Prometheus数据源,填写URL(如`http://prometheus:9090`)

4. 导入Airflow仪表盘[编辑 | 编辑源代码]

Grafana社区提供现成的Airflow仪表盘模板(ID:11010),通过以下步骤导入: 1. 导航到`Create > Import` 2. 输入模板ID或上传JSON文件

关键指标说明[编辑 | 编辑源代码]

以下为常用监控指标示例:

  • airflow.dagrun.duration.success - 成功DAG运行耗时
  • airflow.task_elapsed_time - 任务执行时间
  • airflow.pool.running_slots - 资源池使用情况

实际案例[编辑 | 编辑源代码]

场景:监控ETL流水线[编辑 | 编辑源代码]

某电商公司使用Airflow运行每日订单ETL,通过Grafana实现: 1. **延迟告警**:当dagrun_duration>2h时触发Slack通知 2. **资源优化**:根据pool.running_slots调整并发数

示例查询[编辑 | 编辑源代码]

  
# 查询最近24小时失败任务  
sum(airflow_task_failures_total{namespace="prod"}[24h]) by (dag_id, task_id)

高级配置[编辑 | 编辑源代码]

自定义指标[编辑 | 编辑源代码]

通过PythonOperator注入自定义指标:

  
from airflow.operators.python import PythonOperator  
from statsd import StatsClient  

def track_custom_metric(**context):  
    statsd = StatsClient()  
    statsd.incr('custom.metric')  

task = PythonOperator(  
    task_id='log_metric',  
    python_callable=track_custom_metric  
)

Mermaid可视化[编辑 | 编辑源代码]

graph TD A[Airflow Metrics] -->|StatsD| B(Prometheus) B --> C{Grafana} C --> D[Alerting] C --> E[Visualization]

故障排除[编辑 | 编辑源代码]

  • **指标缺失**:检查Airflow日志确认statsd服务连通性
  • **数据延迟**:调整Prometheus的`scrape_interval`
  • **权限问题**:确保Grafana有权限读取Prometheus

最佳实践[编辑 | 编辑源代码]

1. 为生产环境配置单独的Prometheus实例 2. 使用标签区分开发/生产环境(如`env=prod`) 3. 定期清理过期指标避免存储压力

延伸阅读[编辑 | 编辑源代码]

  • Airflow官方文档:Metrics部分
  • Grafana文档:Alert Rules配置
  • PromQL语法指南