Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Cloud Composer では Cloud Monitoring と Cloud Logging を使用できます。
Cloud Monitoring では、クラウドで実行されるアプリケーションのパフォーマンスや稼働時間、全体的な動作状況を確認できます。Cloud Monitoring が Cloud Composer から指標、イベント、メタデータを収集し取り込むことにより、ダッシュボードとグラフを介して分析情報を得ることができます。また、Cloud Monitoring では Cloud Composer 環境のパフォーマンスや動作状況と Airflow の指標を確認することもできます。
Logging は、環境のクラスタ内のスケジューラとワーカー コンテナによって生成されたログをキャプチャします。 これらのログには、デバッグに役立つシステムレベルと Airflow 依存関係の情報が含まれています。ログの表示については、Airflow ログの表示をご覧ください。
始める前に
Cloud Composer 環境のログと指標にアクセスするには、次の権限が必要になります。
- ログと指標への読み取り専用アクセス:
logging.viewer
とmonitoring.viewer
- プライベート ログを含むログへの読み取り専用アクセス:
logging.privateLogViewer
- 指標に対する読み取り / 書き込みアクセス権:
monitoring.editor
Cloud Composer のその他の権限とロールの詳細については、アクセス制御をご覧ください。
- ログと指標への読み取り専用アクセス:
重複ロギングを回避するため、Google Kubernetes Engine の Cloud Logging は無効になっています。
Cloud Logging は、Google Cloud プロジェクトで発生する各ステータスとイベントのエントリを作成します。除外フィルタを使用すると、Cloud Logging が Cloud Composer 用に生成するログなど、ログの量を減らすことができます。
jobs.py
からログを除外すると、ヘルスチェック失敗とCrashLoopBackOff
エラーが発生する可能性があります。-jobs.py
を除外フィルタに含めて除外されないようにする必要があります。Monitoring では、1 分あたり複数回実行される DAG とタスクのカウント値をプロットできません。また、失敗したタスクの指標をプロットできません。
環境指標
環境指標を使用して、Cloud Composer 環境のリソース使用量と健全性を確認できます。
環境のヘルス
環境の健全性を確認するには、次のヘルス ステータス指標 composer.googleapis.com/environment/healthy
を使用します。
Cloud Composer は、airflow_monitoring
というライブネス DAG を実行します。これはスケジュールに沿って実行され、次のように環境の健全性をレポートします。
- liveness DAG の実行が正常に終了すると、健全性のステータスは
True
になります。 - liveness DAG の実行に失敗した場合、健全性のステータスは
False
になります。
liveness DAG は dags/
フォルダに保存され、Airflow UI に表示されます。liveness DAG の頻度と内容は変更できません。liveness DAG への変更は保持されません。
環境の依存関係のチェック
Cloud Composer は、環境がそのオペレーションに必要なサービスにアクセスできることと、サービスを操作するのに十分な権限があることを定期的に確認します。環境のオペレーションに必要なサービスの例として、Artifact Registry、Cloud Logging、Cloud Monitoring などがあります。
環境の依存関係のチェックでは、次の指標を使用できます。
依存関係の指標 | API | 説明 |
---|---|---|
依存関係のチェック数 | composer.googleapis.com/environment/health/dependency_check_count |
この指標は、環境のオペレーションに必要なサービスに対してネットワーク到達性チェックが行われた回数を追跡します。 |
依存関係の権限のチェック数 | composer.googleapis.com/environment/health/dependency_permissions_check_count |
この指標は、環境のオペレーションに必要なサービスに対して権限チェックが行われた回数を追跡します。 |
データベースのヘルス
健全性統計情報(composer.googleapis.com/environment/database_health
)を使用して、データベースの健全性を確認できます。
Airflow Monitoring Pod はデータベースを 1 分ごとに ping し、SQL 接続を確立できる場合は True
、確立できない場合は False
として健全性のステータスを報告します。
データベースの指標
次の環境指標は、Cloud Composer 環境によって使用される Airflow メタデータ データベースで使用できます。これらの指標を使用して、環境のデータベース インスタンスのパフォーマンスとリソース使用量をモニタリングできます。
たとえば、環境のリソース上限に近づいている場合に、環境の Cloud SQL マシンタイプをアップグレードできます。また、データベースのクリーンアップを実行して、Airflow メタデータ データベースの利用に関連する費用を最適化し、ストレージが特定のしきい値を超えないようにできます。
データベースの指標 | API | 説明 |
---|---|---|
データベースの CPU 時間 |
composer.googleapis.com/environment/database/cpu/usage_time
|
|
データベースの CPU コア |
composer.googleapis.com/environment/database/cpu/reserved_cores
|
|
データベースの CPU 使用率 |
composer.googleapis.com/environment/database/cpu/utilization
|
|
データベースのメモリ使用量 |
composer.googleapis.com/environment/database/memory/bytes_used
|
|
データベースのメモリの割り当て |
composer.googleapis.com/environment/database/memory/quota
|
|
データベースのメモリ使用率 |
composer.googleapis.com/environment/database/memory/utilization
|
|
データベースのディスク使用量 |
composer.googleapis.com/environment/database/disk/bytes_used
|
|
データベースのディスクの割り当て |
composer.googleapis.com/environment/database/disk/quota
|
|
データベースのディスク使用率 |
composer.googleapis.com/environment/database/disk/utilization
|
|
データベースの接続数上限 |
composer.googleapis.com/environment/database/network/max_connections
|
|
データベース接続 |
composer.googleapis.com/environment/database/network/connections
|
|
フェイルオーバーに使用できるデータベース |
composer.googleapis.com/environment/database/available_for_failover
|
環境の Cloud SQL インスタンスが高可用性モードであり、フェイルオーバーの準備ができている場合は True になります。 |
データベースの自動フェイルオーバー リクエスト数 |
composer.googleapis.com/environment/database/auto_failover_request_count
|
環境の Cloud SQL インスタンスの自動フェイルオーバー リクエストの合計数。 |
スケジューラの指標
名前 | API | 説明 |
---|---|---|
アクティブなスケジューラ |
composer.googleapis.com/environment/active_schedulers
|
アクティブなスケジューラ インスタンスの数。 |
triggerer の指標
次の triggerer 指標は、Cloud Composer 専用に提供されています。
名前 | API | 説明 |
---|---|---|
アクティブなトリガラー |
composer.googleapis.com/environment/active_triggerers
|
アクティブな triggerer インスタンスの数。 |
また、Cloud Composer 指標を使用して次の Airflow 指標も使用できます。
名前 | API | Airflow での名称 | 説明 |
---|---|---|---|
実行中のトリガーの合計数。 |
composer.googleapis.com/workload/triggerer/num_running_triggers
|
triggers.running
|
triggerer インスタンスあたりの実行中のトリガーの数。 |
トリガーのブロック |
composer.googleapis.com/environment/trigger/blocking_count
|
triggers.blocked_main_thread
|
メインスレッドをブロックしたトリガーの数(完全に非同期でないことが原因である可能性が高い)。 |
失敗したトリガー |
composer.googleapis.com/environment/trigger/failed_count
|
triggers.failed
|
イベントを発生させる前にエラーで失敗したトリガーの数。 |
成功したトリガー |
composer.googleapis.com/environment/trigger/succeeded_count
|
triggers.succeeded
|
1 つ以上のイベントを発生させたトリガーの数。 |
ウェブサーバーの指標
次の環境指標は、Cloud Composer 環境で使用される Airflow ウェブサーバーで使用できます。これらの指標を使用して、お使いの環境の Airflow ウェブサーバー インスタンスのパフォーマンスとリソース使用量を確認できます。
たとえば、リソースの上限に頻繁に近づいている場合、ウェブサーバーのマシンタイプをアップグレードする必要があります。
名前 | API | 説明 |
---|---|---|
ウェブサーバーの CPU 使用率 |
composer.googleapis.com/environment/web_server/cpu/usage_time
|
|
ウェブサーバーの CPU 割り当て |
composer.googleapis.com/environment/web_server/cpu/reserved_cores
|
|
ウェブサーバーのメモリ使用量 |
composer.googleapis.com/environment/web_server/memory/bytes_used
|
|
ウェブサーバーのメモリ割り当て |
composer.googleapis.com/environment/web_server/memory/quota
|
|
アクティブなウェブサーバー |
composer.googleapis.com/environment/active_webservers
|
アクティブなウェブサーバー インスタンスの数。 |
DAG の指標
DAG 実行の効率をモニタリングし、高レイテンシの原因となるタスクを特定するために、次の DAG 指標を利用できます。
DAG の指標 | API |
---|---|
DAG の実行数 |
composer.googleapis.com/workflow/run_count |
各 DAG の実行時間 |
composer.googleapis.com/workflow/run_duration |
タスクの実行数 |
composer.googleapis.com/workflow/task/run_count |
各タスクの実行時間 |
composer.googleapis.com/workflow/task/run_duration |
Cloud Monitoring では、完了したワークフローとタスクの実行(成功または失敗)に関する指標のみが表示されます。ワークフローのアクティビティが存在しない場合に、進行中のワークフローと実行しているタスクについて [データなし] と表示されます。
Celery Executor の指標
次の Celery Executor の指標を利用できます。これらの指標により、環境内に十分なワーカー リソースがあるかどうかを判断できます。
Celery Executor の指標 | API |
---|---|
キュー内のタスク数 |
composer.googleapis.com/environment/task_queue_length |
オンライン Celery のワーカー数 |
composer.googleapis.com/environment/num_celery_workers |
Airflow 指標
次の Airflow 指標を使用できます。これらの指標は、Airflow によって提供される指標に対応しています。
名前 | API | Airflow での名称 | 説明 |
---|---|---|---|
Celery タスクのゼロ以外の終了コード |
composer.googleapis.com/environment/celery/execute_command_failure_count
|
celery.execute_command.failure
|
Celery タスクからのゼロ以外の終了コードの数。 |
Celery タスクのパブリッシュ タイムアウト |
composer.googleapis.com/environment/celery/task_timeout_error_count
|
celery.task_timeout_error
|
Celery ブローカーにタスクを公開する際に発生した AirflowTaskTimeout エラーの数。 |
シリアル化された DAG の取得期間 |
composer.googleapis.com/environment/collect_db_dag_duration
|
collect_db_dags
|
データベースからシリアル化されたすべての DAG を取得するのに要した時間。 |
DAG 更新エラー |
composer.googleapis.com/environment/dag_callback/exception_count
|
dag.callback_exceptions
|
DAG コールバックから発生した例外の数。例外が発生した場合は、DAG コールバックが機能していないことを表しています。 |
DAG 更新エラー |
composer.googleapis.com/environment/dag_file/refresh_error_count
|
dag_file_refresh_error
|
DAG ファイルの読み込み中に発生した失敗の数。 |
DAG ファイルの読み込み時間 |
composer.googleapis.com/environment/dag_processing/last_duration
|
dag_processing.last_duration.<dag_file>
|
特定の DAG ファイルの読み込みに要した時間。 |
DAG ファイルの処理が行われてからの経過時間 |
composer.googleapis.com/environment/dag_processing/last_run_elapsed_time
|
dag_processing.last_run.seconds_ago.<dag_file>
|
DAG ファイルが最後に処理されてからの経過秒数。 |
DagFileProcessorManager ストール数 |
composer.googleapis.com/environment/dag_processing/manager_stall_count
|
dag_processing.manager_stalls
|
停止した DagFileProcessorManager プロセスの数。 |
DAG 解析エラー |
composer.googleapis.com/environment/dag_processing/parse_error_count
|
dag_processing.import_errors
|
DAG ファイルの解析時に生成されたエラーの数。 |
DAG 解析プロセスの実行 |
composer.googleapis.com/environment/dag_processing/processes
|
dag_processing.processes
|
現在実行中の DAG 解析プロセスの数。 |
プロセッサのタイムアウト |
composer.googleapis.com/environment/dag_processing/processor_timeout_count
|
dag_processing.processor_timeouts
|
過剰に時間を要するため強制終了されたファイル プロセッサの数。 |
すべての DAG ファイルをスキャンしてインポートするのに要した時間 |
composer.googleapis.com/environment/dag_processing/total_parse_time
|
dag_processing.total_parse_time
|
すべての DAG ファイルを一度にスキャンしてインポートするのに要した合計時間。 |
現在の DAG のバッグサイズ |
composer.googleapis.com/environment/dagbag_size
|
dagbag_size
|
スケジューラが構成に基づいてスキャンを実行したときに検出された DAG の数。 |
失敗した SLA 非準拠メール通知 |
composer.googleapis.com/environment/email/sla_notification_failure_count
|
sla_email_notification_failure
|
SLA 非準拠メール通知試行の失敗数。 |
エグゼキュータのオープン スロット |
composer.googleapis.com/environment/executor/open_slots
|
executor.open_slots
|
エグゼキュータのオープン スロットの数。 |
エグゼキュータでキューに入れられたタスク |
composer.googleapis.com/environment/executor/queued_tasks
|
executor.queued_tasks
|
エグゼキュータでキューに入れられたタスクの数。 |
エグゼキュータでのタスクの実行 |
composer.googleapis.com/environment/executor/running_tasks
|
executor.running_tasks
|
エグゼキュータで実行中のタスクの数。 |
タスク インスタンスの成功 / 失敗 |
composer.googleapis.com/environment/finished_task_instance_count
|
ti_failures 、ti_successes
|
タスク インスタンス全体の成功 / 失敗。 |
開始されたジョブと終了したジョブ |
composer.googleapis.com/environment/job/count
|
<job_name>_start 、<job_name>_end
|
開始されたジョブと終了したジョブの数(SchedulerJob、LocalTaskJob など)。 |
ジョブのハートビートの失敗 |
composer.googleapis.com/environment/job/heartbeat_failure_count
|
<job_name>_heartbeat_failure
|
ジョブの失敗したハートビートの数。 |
演算子ごとに作成されたタスク |
composer.googleapis.com/environment/operator/created_task_instance_count
|
task_instance_created-<operator_name>
|
特定の演算子に対して作成されたタスク インスタンスの数。 |
演算子の実行 |
composer.googleapis.com/environment/operator/finished_task_instance_count
|
operator_failures_<operator_name> 、operator_successes_<operator_name>
|
演算子ごとの終了したタスク インスタンス数 |
プール内のオープン スロット |
composer.googleapis.com/environment/pool/open_slots
|
pool.open_slots.<pool_name>
|
プール内のオープン スロットの数。 |
プール内の実行中のスロット |
composer.googleapis.com/environment/pool/queued_slots
|
pool.queued_slots.<pool_name>
|
プール内の実行中のスロットの数。 |
プール内の実行中のスロット |
composer.googleapis.com/environment/pool/running_slots
|
pool.running_slots.<pool_name>
|
プール内の実行中のスロットの数。 |
プール内の不足タスク |
composer.googleapis.com/environment/pool/starving_tasks
|
pool.starving_tasks.<pool_name>
|
プール内の不足タスクの数。 |
スケジューラの重要なセクションで費やされた時間 |
composer.googleapis.com/environment/scheduler/critical_section_duration
|
scheduler.critical_section_duration
|
スケジューラ ループの重要なセクションで費やされた時間。一度にこのループに入ることができるスケジューラは 1 つのみです。 |
重大なセクションのロックの失敗 |
composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count
|
scheduler.critical_section_busy
|
スケジューラ プロセスが重要なセクション(エグゼキュータへのタスクの送信に必要)をロックしようとしたが、別のプロセスによってロックされたことを示した回数。 |
外部で強制終了されたタスク |
composer.googleapis.com/environment/scheduler/task/externally_killed_count
|
scheduler.tasks.killed_externally
|
外部で強制終了されたタスクの数。 |
孤立したタスク |
composer.googleapis.com/environment/scheduler/task/orphan_count
|
scheduler.orphaned_tasks.cleared 、scheduler.orphaned_tasks.adopted
|
スケジューラによってクリアまたは採用された、孤立したタスクの数。 |
実行中 / 枯渇 / 実行可能タスク |
composer.googleapis.com/environment/scheduler/tasks
|
scheduler.tasks.running , scheduler.tasks.starving , scheduler.tasks.executable
|
実行中 / 枯渇 / 実行可能タスクの数。 |
スケジューラのハートビート |
composer.googleapis.com/environment/scheduler_heartbeat_count
|
scheduler_heartbeat
|
スケジューラのハートビート |
失敗した SLA コールバック通知 |
composer.googleapis.com/environment/sla_callback_notification_failure_count
|
sla_callback_notification_failure
|
SLA 非準拠メール通知試行の失敗数。 |
スマート センサーのポーリング例外の障害 |
composer.googleapis.com/environment/smart_sensor/exception_failures
|
smart_sensor_operator.exception_failures
|
前のスマート センサーのポーリング ループの例外によって発生した障害の数。 |
スマート センサーのポーリング インフラストラクチャの障害 |
composer.googleapis.com/environment/smart_sensor/infra_failures
|
smart_sensor_operator.infra_failures
|
前のスマート センサーのポーリング ループのインフラストラクチャ障害の数。 |
スマート センサーのポーリングの例外 |
composer.googleapis.com/environment/smart_sensor/poked_exception
|
smart_sensor_operator.poked_exception
|
前のスマート センサーのポーリング ループの例外の数。 |
スマート センサーによって正常にポーリングされたタスク |
composer.googleapis.com/environment/smart_sensor/poked_success
|
smart_sensor_operator.poked_success
|
前のポーリング ループでスマート センサーによってポーリングされた、新しく成功したタスクの数。 |
スマート センサーによってポーリングされたタスク |
composer.googleapis.com/environment/smart_sensor/poked_tasks
|
smart_sensor_operator.poked_tasks
|
前のポーリング ループでスマート センサーによってポーリングされたタスクの数。 |
以前に成功したタスク インスタンス |
composer.googleapis.com/environment/task_instance/previously_succeeded_count
|
previously_succeeded
|
以前に成功したタスク インスタンスの数。 |
強制終了したゾンビタスク |
composer.googleapis.com/environment/zombie_task_killed_count
|
zombies_killed
|
強制終了されたゾンビタスクの数。 |
DAG の実行期間 |
composer.googleapis.com/workflow/dag/run_duration
|
dagrun.duration.success.<dag_id> 、dagrun.duration.failed.<dag_id>
|
DagRun が成功または失敗状態になるまでに要した時間。 |
DAG の依存関係のチェック期間 |
composer.googleapis.com/workflow/dependency_check_duration
|
dagrun.dependency-check.<dag_id>
|
DAG の依存関係のチェックに要した時間。この指標は、環境の依存関係や権限チェックの指標とは異なり、DAG に適用されます。 |
DAG 実行スケジュールの遅延 |
composer.googleapis.com/workflow/schedule_delay
|
dagrun.schedule_delay.<dag_id>
|
スケジュール設定された DagRun 開始日と実際の DagRun 開始日の間の遅延。 |
終了したタスク |
composer.googleapis.com/workflow/task_instance/finished_count
|
ti.finish.<dag_id>.<task_id>.<state>
|
特定の DAG で完了したタスクの数。 |
タスク インスタンスの実行時間 |
composer.googleapis.com/workflow/task_instance/run_duration
|
dag.<dag_id>.<task_id>.duration
|
タスクの完了に要した時間。 |
開始されたタスク |
composer.googleapis.com/workflow/task_instance/started_count
|
ti.start.<dag_id>.<task_id>
|
特定の DAG で開始されたタスクの数。 |
タスク インスタンスのキュー時間 |
composer.googleapis.com/workflow/task_instance/queued_duration
|
dag.<dag_id>.<task_id>.queued_duration
|
タスクが実行状態に切り替わるまでのキュー状態の所要時間。 |
DAG から削除されたタスク |
composer.googleapis.com/workflow/task/removed_from_dag_count
|
task_removed_from_dag.<dag_id>
|
特定の DAG で削除されたタスクの数(DAG に存在しなくなったタスク)。 |
DAG に復元されたタスク |
composer.googleapis.com/workflow/task/restored_to_dag_count
|
task_restored_to_dag.<dag_id>
|
特定の DAG で復元されたタスクの数(つまり、以前 DB で削除された状態だったタスク インスタンスが DAG ファイルに追加されます)。 |
タスク スケジュールの遅延 |
composer.googleapis.com/workflow/task/schedule_delay
|
dagrun.schedule_delay.<dag_id>
|
最初のタスクの start_date から dagrun の想定される開始までの経過時間。 |
Cloud Composer 環境で Monitoring を使用する
コンソール
Metrics Explorer を使用すると、環境と DAG に関連する指標を表示できます。
Cloud Composer Environment リソースには環境の指標が含まれています。
特定の環境の指標を表示するには、
environment_name
ラベルで指標をフィルタリングします。環境のロケーションやイメージのバージョンなど、他のラベルでフィルタすることもできます。Cloud Composer ワークフロー リソースには、DAG の指標が含まれています。
特定の DAG またはタスクの指標を表示するには、
workflow_name
ラベルとtask_name
ラベルで指標をフィルタリングします。タスクのステータスや Airflow オペレータ名など、他のラベルでフィルタすることもできます。
API と gcloud
Cloud Monitoring API と gcloud monitoring dashboards
コマンドを使用して、カスタム ダッシュボードとウィジェットを作成および管理できます。詳細については、API によるダッシュボードの管理をご覧ください。
リソース、指標、フィルタの詳細については、Cloud Monitoring API のリファレンスをご覧ください。
Cloud Monitoring アラートの使用
アラート ポリシーを作成して指標の値をモニタリングすると、指標が条件に違反した場合に通知できます。
-
Google Cloud コンソールで、[notificationsアラート] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- 通知チャンネルを作成せずに通知を受け取る場合は、[EDIT NOTIFICATION CHANNELS] をクリックして、通知チャンネルを追加します。チャンネルを追加したら、[アラート] ページに戻ります。
- [アラート] ページで、[CREATE POLICY] をクリックします。
- 指標を選択するには、[指標を選択] メニューを開き、次の操作を行います。
- メニューを関連するエントリに限定するには、フィルタバーに「
Cloud Composer
」と入力します。結果が表示されない場合は、[Show only active resources & metrics] をオフに切り替えます。 - [Resource type] で、[Cloud Composer Environment] または [Cloud Composer Workflow] を選択します。
- 指標カテゴリと指標を選択して、[適用] を選択します。
- メニューを関連するエントリに限定するには、フィルタバーに「
- [次へ] をクリックします。
- [Configure alert trigger] ページの設定によって、アラートがトリガーされるタイミングが決まります。条件タイプを選択し、必要に応じてしきい値を指定します。詳細については、指標しきい値のアラート ポリシーを作成するをご覧ください。
- [次へ] をクリックします。
- (省略可)アラート ポリシーに通知を追加するには、[通知チャネル] をクリックします。ダイアログで、メニューから 1 つ以上の通知チャンネルを選択し、[OK] をクリックします。
- (省略可)インシデントの自動クローズ期間を更新します。このフィールドは、指標データがない場合に Monitoring がインシデントを閉じるタイミングを決定します。
- (省略可)[Documentation] をクリックして、通知メッセージに追加する情報を入力します。
- [アラート名] をクリックして、アラート ポリシーの名前を入力します。
- [Create Policy] をクリックします。