Airflowのschedule関連について

概要 Airflowのscheule関連についてしっかりと理解できていなかったので、DataPipelines with ApacheAirflowのCAPTER3「Scheduling in Airflow」を参考にしつつ雑にまとめてみた。 TL;DR DAGは「schedule_interval」に設定した間隔で実行される。 「schedule_interval」はcronとtimedeltaインスタンスで書くことができる。 「interval is started」「the end of the interval」 「execution date」は実際の実行時間ではない。 JinjaTemplateを使用して動的に設定することによってデータを段階的に処理できる。 DAGはbackfillを使うと過去分実行ができる。 schedule_intervalについて DAGの定期的な実行間隔は airflow.dagの「scheudle_interval」引数に指定する。 「None」の場合、UIもしくはAPIからの実行のみがトリガーとなる。 dag = DAG( dag_id="unscheduled", start_date=dt.datetime(2019, 1, 1), schedule_interval=None ) 「Cron」を使用することができる。 0 * * * * 0 0 * * MON-FRI 値をrangeで渡すこともできる(例は平日の0時に実行) 0, 0,12 * * * 値をリストで渡すこともできる(例は0,12時に実行) dag = DAG( dag_id="use_cron", start_date=dt....

January 1, 2022 · Me

Flaskを活用して自作exporter作成。Prometheus->Grafanaで可視化

概要 Flaskを活用して自作exporterを作成し、Prometheusでmetrics取得->Grafanaでmetrics可視化を行う手順の備忘録 手順 構成 . ├── docker-compose.yml ├── flask │ ├── Dockerfile │ └── app │ └── app.py ├── grafana │ ├── Dockerfile │ └── datasource.yml └── prometheus.yml flask/Dockerfile FROMubuntu:latestRUN apt-get updateRUN apt-get install python3 python3-pip -yRUN pip3 install flask prometheus-clientRUN mkdir /appflask/app.py pythonのPrometheusClientライブラリを使ってexporter化。curl http://localhost:3000/hogeでGauge型のmetricsが増減するexporterです。 from flask import Flaskimport json import queue from werkzeug.middleware.dispatcher import DispatcherMiddleware from prometheus_client import make_wsgi_app,Gauge app = Flask(__name__) G1 = Gauge('Gauge1','Gauge test') G2 = Gauge('Gauge2','Gauge test') @app....

January 1, 2020 · Me

GrafanaでのDashboard作成を自動化する

概要 Flaskを活用して自作exporter作成。Prometheus->Grafanaで可視化の続き。現状のままだとコンテナRestart都度GrafanaへDashboardの作成をしなくてはならないので、起動時に自動でDashboardが作成できるようにする備忘録 手順 構成 ├── docker-compose.yml ├── flask │ ├── Dockerfile │ └── app │ └── app.py ├── grafana │ ├── Dockerfile # 変更 │ ├── dashboard.yml # 作成 │ ├── datasource.yml │ └── prometheus │ └── <hoge>.json # 作成 └── prometheus.yml Dashboard自動作成設定ファイル「dashboard.yml」、自動作成するDashboardのファイル「.json」を作成。 追加ファイルをコンテナへ置くためにGrafanaの「Dockerfile」を変更。 grafana/prometheus/.json http://localhost:3000でGrafanaへ接続 「Create」→「Dashboard」で自動作成するDashboardを作成する。 「Share dashboard」→「Export」→「Save to file」でJSONファイルを出力。「./grafana/prometheus」配下にファイルを置く。 grafana/dashboard.yml https://grafana.com/docs/grafana/latest/administration/provisioning/#datasources apiVersion: 1 providers: - name: 'prometheus metrics' orgId: 1 folder: '' folderUid: '' type: file disableDeletion: false updateIntervalSeconds: 10 allowUiUpdates: false options: path: /etc/grafana/provisioning/dashboards/prometheus foldersFromFileStructure: true grafana/Dockerfile FROMgrafana/grafana:masterCOPY ....

January 1, 2020 · Me