OpenTelemetryを構成して New Relic にデータを送信することで Apache Airflow データを監視し、タスク、オペレーター、DAG の実行をメトリクスとして視覚化できます。
前提条件
Apache Airflow で OpenTelemetry を有効にする前に、 otel
エクストラを含む Airflow パッケージをインストールする必要があります。インストール方法は、Airflow 導入アプローチによって異なります。
オプション 1: PyPi からインストールする
Airflow のドキュメントのインストール手順に従ってください。
pip を使用してインストールする場合は、コマンドに
otel
を追加します。 例えば:bash$pip install "apache-airflow[otel]"
オプション 2: Docker からのインストール
Airflow のドキュメントの手順に従って、Airflow Docker イメージをセットアップします。
Dockerfile を使用してビルド済みの Docker イメージを拡張し、
otel
エクストラをインストールします。最新のタグを希望のバージョンのイメージに置き換えることができます。FROM apache/airflow:latestRUN pip install --no-cache-dir "apache-airflow[otel]==$AIRFLOW_VERSION"
ヒント
$AIRFLOW_VERSION
は、Apache/airflow コンテナによってすでに設定されていますが、他のベース イメージのバージョン番号に置き換えることができます。
構成
Airflow メトリクスをNew Relic に送信するには、OpenTelemetry にデータをエクスポートするように メトリクスを設定します。これにより、OpenTelemetry を使用してデータがNew Relic OTLP エンド ポイント に転送されます。
重要
AirflowOpenTelemetry OpenTelemetryは現在、認証ヘッダー付きの データの送信をサポートしていないため、 での認証にはNew Relic コレクターが不可欠です。
OpenTelemetryコレクターを構成する
- 基本的なコレクターの例に従って、OpenTelemetry コレクターを設定します。
https://otlp.nr-data.net:4317
などの適切な OTLP エンドポイントを使用してコレクターを構成します。- 認証のために、 を環境変数
NEW_RELIC_LICENSE_KEY
に追加して、api-key
ヘッダーに値が設定されるようにします。 - 実行中の Airflow インスタンスからコレクターのポート 4318 にアクセスできることを確認します。 (docker の場合は、 docker ネットワーク を使用する必要がある場合があります。)
- コレクターをリリースします。
エアフローメトリクスを構成する
Airflow は、ポート4318
を使用する OTLP over HTTP を使用してメトリクスを送信します。Airflow には、構成オプションを設定する複数の方法があります。
重要
dockerご使用の環境でOpenTelemetry コレクターと並んで コンテナーで Airflow が実行されている場合は、otel_host
設定をlocalhost
からコレクターのコンテナー アドレスに変更する必要があります。
次のいずれかの方法を選択して、エアフローに必要なオプションを設定します。
airflow.cfg
ファイルに必要なオプションを設定します。[metrics]otel_on = Trueotel_host = localhostotel_port = 4318otel_ssl_active = Falseまたは、必要なオプションを環境変数として設定します。
bash$export AIRFLOW__METRICS__OTEL_ON=True$export AIRFLOW__METRICS__OTEL_HOST=localhost$export AIRFLOW__METRICS__OTEL_PORT=4318$export AIRFLOW__METRICS__OTEL_SSL_ACTIVE=False
ヒント
Airflow には、役立つ可能性のあるメトリクスの追加設定があります。これには、送信前にメトリクスの名前を変更する機能が含まれます。これは、メトリクス名が OpenTelemetry の 63 バイト制限を超える場合に役立ちます。
データが New Relic に送信されることを検証する
New Relic が Airflow データを収集していることを確認するには、DAG またはパイプラインを実行します。
- エアフローにログインします。
- 既存のチュートリアル DAG の 1 つ、または独自のチュートリアル DAG の実行ボタンをクリックします。
- パイプラインの実行が完了するまで待ちます。
- one.newrelic.com > All capabilities > APM & services > Services - OpenTelemetry > Airflowに移動します。
- Metrics Explorerをクリックして、パイプライン実行のメトリクスを視覚化します。
ダッシュボードの構築
Airflow メトリクスを使用すると、個々のパイプラインや全体的なパフォーマンスに関するダッシュボードを構築したり、異なるパイプライン間の比較を表示したりできます。メトリクスのクエリの詳細については、ここをクリックしてください。
このクエリは、Airflow について報告されたすべてのメトリクスのリストを取得します。
SELECT uniques(metricName) FROM Metric WHERE entity.name = 'Airflow' AND metricName LIKE 'airflow.%' SINCE 30 MINUTES AGO LIMIT 100
メトリクス名が制限 ( 100
) を超える場合は、必ず制限を変更してください。
このクエリは、さまざまな DAG が正常に実行された場合のさまざまな完了時間を比較します。
SELECT latest(airflow.dagrun.duration.success) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES
このクエリは、失敗した DAG 実行の数を示します。これは、重要なパイプラインのを構築するために使用できます。
SELECT count(airflow.dagrun.duration.failed) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES
重要
Airflow の OpenTelemetry メトリクスは New Relic によって保守されていないため、インストルメンテーションに問題がある場合は、 Airflow の GitHub リポジトリで新しい問題を作成してください。