Apache Airflow指标监控实践

14 篇文章 5 订阅
2 篇文章 0 订阅

Apache Airflow官方提供了statsd的指标采集功能,我们可以基于statsd来监控Airflow集群整体的运行情况,结合Prometheus及Grafana对采集的指标进行展示并设置告警功能,保障Airflow集群在出现故障的时候能够及时的处理。

1.Airflow集群指标采集及数据展示整体流程

整个采集流程分为3个大的步骤:

a.在安装statsd并且在airflow.cfg开启statsd后,Airflow集群会推送相关监控的指标到指定的statsd server中

b.我们使用statsd_exporter来代替statsd,以此将statsd采集的指标转化成Prometheus可以识别的格式,在Prometheus的 prometheus.yml 文件中配置 statsd_export服务,即可采集Airflow集群上报的指标

c.再通过Grafana软件连接Prometheus Server,展示采集的指标,达到可视化的一个功能。且可以结合AlertManager配置告警功能,以此保障Airflow集群出现故障能够及时被通知及处理。

2.软件安装及配置

我们使用docker快速的对用到的软件进行安装(实际在生产使用的时候尽可能复用现有的组件)

2.1 statsd_exporter

docker pull prom/statsd-exporter

创建 statsd_exporter目录

mkdir /opt/soft/statsd_export

下载 从statsd格式转成Prometheus格式指标的mapping文件

wget https://raw.githubusercontent.com/databand-ai/airflow-dashboards/main/statsd/statsd.conf
cp statsd.conf statsd_mapping.yml

运行statsd_exporter

docker run -d -p 9102:9102 -p 9125:9125 -p 9125:9125/udp \
    -v $PWD/statsd_mapping.yml:/tmp/statsd_mapping.yml \ 
    prom/statsd-exporter --statsd.mapping-config=/tmp/statsd_mapping.yml

在浏览器中输入 statsd_export_host:9102, 出现如下页面说明运行成功

2.2 airflow.cfg配置修改

接着,我们对Airflow的airflow.cfg文件进行配置

[metrics] # 2.0版本在 [metrics] 模块下配置, 1.10 版本在 [core] 模块下配置
# StatsD (https://github.com/etsy/statsd) integration settings.
# Enables sending metrics to StatsD.
statsd_on = True
statsd_host = statsd_exporter_host  # statsd_exporter 的 ip 如 192.168.3.15
statsd_port = 9125
statsd_prefix = airflow

配置完后重启Apache Airflow集群,重启正常不报错说明配置是OK的。

我们还可以在 statsd_exporter_host:9102 页面进一步验证, 出现相关指标监控信息了,说明配置是OK的。

2.3 Prometheus

下载promethues镜像

docker pull prom/prometheus

添加statsd_exporter的配置到prometheus.yml文件中

mkdir /opt/soft/prometheus
cd /opt/soft/prometheus
vim prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['127.0.0.1:9090']

  - job_name: airflow
    static_configs:
      - targets: ['statsd_exporter_host:9102'] # 注意将 statsd_exporter_host 进行替换

启动prometheus 服务

docker run -d --name prometheus -p 9090:9090 -v /opt/soft/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml

使用浏览器进行验证

点击Status -> Targets

 看到statsd_exporter的state已经变成了UP状态,说明prometheus.yml的配置是OK的。

2.4 Grafana

运行grafana

docker run -d --name grafana -p 3000:3000 grafana/grafana

成功启动后在浏览器中 输入 grafana_host:3030, 初次登陆使用 admin/admin进行验证,后需要更改密码,按照提示走就行。

grafana登陆界面截图:

prometheus 数据源配置

在主页面上选择Configuration -> Data Sources

然后点击Add data source

 选择Prometheus数据源

填入Name \ Prometheus 的URL 信息 

 点击Save & Test, 出现 Data Source is Working说明添加Prometheus数据源是成功的。

3.Airflow Dashboard配置

3.1下载airflow dashboard模板

我们从github下载Databand开源的一个Airflow Dashboard配置文件,其中包含两个Dashboard,一个是整个集群的运行情况,另一个是单个的dag运行的情况。

https://github.com/databand-ai/airflow-dashboards/

3.2将airflow dashboard模板导入到grafana中

下载下来了之后,在主页依次点击 Create -> Import

再点击upload json file,选择cluster-dashboard.json / dag-dashboard.json 文件, 点击确认导入airflow dashboard模板

点击确认后即可看到下面这个Dashboard, 由于没有配置数据源,现在所看到的数据都是Grafana随机生成的

3.3 Airflow Dashboard指标配置实例

在页面上点击edit即可配置Airflow采集的Prometheus数据源,选择与标题相匹配的指标即可正常的对Airflow的指标进行可视化.

我们以Scheduler heartbeat这个指标为例,演示一下如何进行将数据源替换成我们配置的的Promethues数据源.

先选中Scheduler heartbeat,然后会弹出一个对话框,再点击edit进入到指标编辑页面.

选择我们刚刚配置的Prometheus For Airflow数据源

点击Metrics -> af -> af_agg_scheduler_heart_beat,即可展示出这个 scheduler heatbeat这个指标的数据

在选择指标的时候要根据title来选,选择与title相应的metrics, 及下图中的 a 要与 c 相匹配。

下面就是我们所监控的Airflow集群的Scheduler heartbeat这个指标的监控情况,点击Appy可以回到刚刚的Dashboard页面 

 这样一个指标就配置成功了。

按照上面的步骤可以依次的对其余的指标进行配置。

4.总结

本文对Airflow的指标监控的实施进行了一个讲解,只是起到了一个引路的作用,在实践中更好的对Airflow进行监控还需要参考Airflow Metrics及Grafana的文档。

 

更多关于Apache Airflow的文章,请查看 Apache Airflow系列文章

若在实践中遇到什么问题的话,欢迎大家加入Apache Airflow 技术交流群进行讨论.

或者加入QQ群 704721809。

 

参考资料:

[1] Everyday Data Engineering: Monitoring Airflow with Prometheus, StatsD and Grafana

https://databand.ai/blog/everyday-data-engineering-monitoring-airflow-with-prometheus-statsd-and-grafana/

[2] Monitoring Apache Airflow using Prometheus

https://www.redhat.com/en/blog/monitoring-apache-airflow-using-prometheus

[3] Apache Airflow Metrics Page

https://airflow.apache.org/docs/apache-airflow/stable/logging-monitoring/metrics.html

[4] statsd_export github page

https://github.com/prometheus/statsd_exporter

[5] Configure Prometheus and Grafana in Dockers

https://medium.com/aeturnuminc/configure-prometheus-and-grafana-in-dockers-ff2a2b51aa1d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值