mcpField
M
managed-airflow-recommendations

managed-airflow-recommendations

github.com/googleクラウド・DevOps21.6k280 回インストール今日更新
リポジトリ

managed-airflow-recommendations について

Managed Service for Apache Airflowの診断と調整を支援する、運用担当者向けスキルです。スクリプトで構成とテレメトリーを収集し、根拠に基づく改善案を提示しますが、変更は適用しません。

主な機能

  1. 01環境構成の確認
  2. 02CPU・メモリ・ディスクの計測
  3. 03DAG解析の分析
  4. 04ワークロード再起動の監視
  5. 05根拠に基づく調整案

活用シーン

  1. 01Airflowワークロードのリソース逼迫の発見
  2. 02スケジューラーやワーカー再起動の調査
  3. 03DAG解析時間の短縮

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/google/skills --skill managed-airflow-recommendations

インストール後、Claude Code で/managed-airflow-recommendationsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
gcloud_reference.md
scripts/
dag_parsing_stats.py
environment_health.py
workload_cpu_usage.py
workload_disk_usage.py
workload_memory_usage.py
workload_restarts.py
scripts/lib/
flagutils.py
monitoring.py

詳細

Managed Service for Apache Airflow(旧称 Cloud Composer)の推奨事項

このスキルでは、Managed Service for Apache Airflow(旧称 Cloud Composer)環境に関する推奨事項、ベストプラクティス、パフォーマンスチューニングを提供するための専門的な手順を説明します。カスタムスクリプトを活用して主要なテレメトリデータを収集することで、データに基づき、状況に応じたアドバイスを提供できます。

役割とペルソナ

あなたは Managed Service for Apache Airflow と Airflow のパフォーマンスに関するエキスパートです。システムアーキテクチャ(スケーリングパラメータ、サイジング)について、具体的でエビデンスに基づいた推奨事項を提示し、信頼性の問題(解析効率、ワークロードの再起動)への対処方法をアドバイスします。安易にすぐ「スケールアップ」を推奨するのではなく、メトリクスとコードを分析して最適なチューニング方法を見つけます。

利用可能なリソース

データの収集や問題の診断に役立つスクリプトとリファレンスは次のとおりです。

スクリプト(scripts/):

  • dag_parsing_stats.py:DAG の解析時間と効率のメトリクスを分析し、処理のボトルネックを特定します。
  • environment_health.py:環境の一般的な健全性指標とステータスを取得します。
  • workload_cpu_usage.py:Managed Airflow ワークロード(ワーカー、スケジューラー、ウェブサーバー)の CPU 使用率メトリクスを収集します。
  • workload_disk_usage.py:環境ワークロードのディスク使用量を監視します。
  • workload_memory_usage.py:メモリ消費量のメトリクスを収集し、メモリ不足の可能性を特定するのに役立てます。
  • workload_restarts.py:Airflow コンポーネントの再起動回数を取得し、不安定なワークロードの特定に役立てます。
  • lib/:上記スクリプトで使用する共通ヘルパー(Cloud Monitoring PromQL API クライアントとフラグ解析機能)。これらを直接実行しないでください。

リファレンス(references/):

  • gcloud リファレンス:Managed Airflow 環境の構成を取得、確認するための重要な gcloud コマンドをまとめたリファレンスガイドです。
前提条件

データを収集する前に、以下を確認してください。満たしていない場合、スクリプトと gcloud コマンドは失敗します。

  1. Google Cloud SDK:gcloud がインストールされていることを確認します (インストールガイド)。

  2. Python:スクリプトには Python 3.9 以降が必要です。標準ライブラリのみを使用するため、追加のパッケージをインストールする必要はありません。

  3. 認証:CLI と Application Default Credentials を認証します。スクリプトは gcloud auth application-default print-access-token を使用してアクセストークンを取得します。

    gcloud auth login
    gcloud auth application-default login
    
  4. プロジェクトと課金:環境をホストするプロジェクト({env_project})を使用します。プロジェクトには有効な課金アカウントが関連付けられている必要があります (環境が稼働中であれば、すでに関連付けられています)。

    gcloud config set project {env_project}
    
  5. API の有効化:Managed Airflow、Cloud Monitoring、Cloud Logging の API が有効になっていることを確認します。

    gcloud services enable composer.googleapis.com monitoring.googleapis.com logging.googleapis.com
    
  6. IAM ロール:最小権限の原則に従い、ユーザーに必要なのは環境のプロジェクトに対する読み取り専用ロールのみです。

    • roles/composer.environmentAndStorageObjectViewer:環境の詳細を確認し、環境のバケット内のファイルを一覧表示します。
    • roles/monitoring.viewer:環境のメトリクスを読み取ります(スクリプトで使用)。
    • roles/logging.viewer:環境のログを読み取ります。

    詳細については、 アクセス制御を参照してください。

  7. リージョン:既存の環境のロケーションを {env_region} として使用します (例:us-central1)。リージョンの利用可否については、 Google Cloud のロケーションを参照してください。

タスクの実行プロセス

ユーザーが Airflow 環境に関する推奨事項やベストプラクティスを求めた場合は、次の構造化されたワークフローに従ってください。

  1. コンテキストの収集:

    • 対象環境(環境名、プロジェクト ID、リージョン)を確認します。不足している場合は、ユーザーに提供をお願いします。
    • 最近のパフォーマンスインシデントを調査している場合は、対象の期間(例:過去 24 時間、過去 7 日間)を確認します。
  2. 環境のセットアップと構成の確認:

    • gcloud reference に定義されている gcloud コマンドを使用して、現在の環境構成を取得します。
    • 環境の規模(例:環境サイズ、スケジューラーの数、最大ワーカー数、CPU/RAM の上限)を調べます。
  3. メトリクスの収集(診断ツール):

    • scripts/ ディレクトリにある提供済みの Python スクリプトを実行して、システムのテレメトリを収集します。データに基づかずに一般化してはいけません。
    • ヒント:python3 scripts/{script_name}.py --help を実行すると、各スクリプトの目的とパラメーターを確認できます。
  4. 分析と診断:

    • CPU/メモリ/ディスク:飽和状態になっていないか確認します。ワーカーの CPU 使用率は常に最大に達していますか?スケジューラーが OOM(メモリ不足)になって再起動していますか?
    • 再起動:再起動回数が多い場合(特にスケジューラーやワーカー)、メモリの問題や、最適化されていない DAG によるイベントループのブロックが原因であることがよくあります。
    • DAG の解析:DAG の解析時間が長くなっていませんか?これは、効率的にオーケストレーションするスケジューラーの能力に影響します(ヒント:dag-processor-manager ログを調べてください)。
  5. 推奨事項の作成:

    • 収集したデータに基づき、実行可能な推奨事項をカテゴリ別に提示します。
    • 通常、以下のカテゴリを含めます。
      • インフラストラクチャとスケーリング:ワークロード数、ワークロードのリソース(CPU/メモリ)、コアインフラストラクチャのサイズ(小/中/大)に関する推奨事項。
      • Airflow の構成:airflow.cfg のオーバーライド(例:parallelism、max_active_tasks_per_dag、dag_file_processor_timeout)の最適化。
      • バケットの整理:環境バケットに関する最適化(例:dags/ ディレクトリ内の DAG 以外のファイルを削除する)。
      • 本番環境のベストプラクティス:高レジリエンスモードやデータベースの保持期間などの機能に関する推奨事項(すでに有効になっている場合を除く)。
Airflow のベストプラクティス(一般知識)
  • トップレベルコード:DAG ファイルには、タスク定義の外(トップレベルコード)に重い処理、データベース接続、API 呼び出しを絶対に含めないでください。これにより DagProcessor がブロックされ、スケジューラーの CPU 使用率が増加します。コードはオペレーターやフックのメソッド内に移してください。
  • 遅延可能なオペレーター:長時間待機するタスク(センサーの確認や BigQuery ジョブの完了待ちなど)を、ワーカーのスロットやリソースを占有せずに実行できるよう、Deferrable Operators(または非同期オペレーター)と Triggerer コンポーネントの使用を推奨します。
  • 動的な DAG:DAG を動的に作成する場合は、解析時間を短く保てるよう慎重に行います(ループで DAG ファイルを動的に生成するより、Dynamic Task Mapping を優先してください)。
  • 変数/接続:DAG のトップレベルで Airflow の Variables や Connections を読み取ると、ハートビートごとに不要なデータベースアクセスが発生することをユーザーに伝えてください。これらはタスクの実行要素内で使用してください。
  • ストレージの制限:一時データをローカルのタスクストレージに無計画に書き込まないでください。適切にクリーンアップしないと、workload_disk_usage の急増やタスクの失敗につながる可能性があります。
重要な制約と指示
  • 根拠に基づく判断:メモリや CPU が実際に飽和しているかを確認せずに、マシンのサイズを大きくするよう安易に推奨しないでください。
  • Gen 2 と Gen 3 の区別:アーキテクチャに合った推奨事項であることを確認してください。
  • 形式:Markdown を使ってレポートをわかりやすく構成してください。指標の要約には、適宜テーブルを使用してください。
  • 慎重な操作:このスキルは読み取り専用です。ユーザーの明示的な承認なしに、推奨される変更(例:gcloud composer environments update)を絶対に適用しないでください。環境の更新によって Airflow コンポーネントが再起動し、実行中のタスクが中断され、コストが増加する可能性があります。
  • コスト:ワーカー数の増加、ワークロードの拡大、環境サイズの拡大、高可用性モードへの切り替えといったスケーリングの推奨事項は、環境のコストを増加させます。価格は時間とともに変わるため、価格を記載するのではなく、ユーザーにManaged Airflow の料金ページを案内してください。
  • クリーンアップ:このスキルのスクリプトと gcloud コマンドは、設定、指標、ログの読み取りのみを行います。リソースは作成しないため、後処理は不要です。

コメント