使用 Cloud Monitoring 監控環境

您可以搭配使用 Cloud Monitoring 和 Cloud Logging 與 Managed Service for Apache Airflow。

您可以運用 Cloud Monitoring 掌握雲端應用程式的效能、運作時間和整體健康狀態。Cloud Monitoring 會收集並擷取 Managed Airflow 的指標、事件和中繼資料,在資訊主頁和圖表中生成洞察資料。您可以使用 Cloud Monitoring 瞭解 Managed Airflow 環境和 Airflow 指標的效能和健康狀態。

Logging 會擷取環境叢集中排程器和 worker 容器產生的記錄。這些記錄包含系統層級和 Airflow 依附元件資訊,可協助偵錯。如要瞭解如何查看記錄,請參閱「查看 Airflow 記錄」。

事前準備

  • 必須具備下列權限,才能存取 Managed Airflow 環境的記錄和指標:

    • 記錄和指標的唯讀存取權: logging.viewer 和 monitoring.viewer
    • 記錄檔 (包括私人記錄檔) 的唯讀存取權: logging.privateLogViewer
    • 指標的讀取/寫入權限: monitoring.editor

    如要進一步瞭解 Managed Airflow 的其他權限和角色,請參閱「存取控管」。

  • 為避免重複記錄,Google Kubernetes Engine 的 Cloud Logging 已停用。

  • Cloud Logging 會為 Cloud de Confiance by S3NS 專案中發生的每項狀態和事件產生一筆記錄。您可以使用排除篩選器減少記錄量,包括 Cloud Logging 為 Managed Airflow 產生的記錄。

環境指標

您可以使用環境指標,檢查 Managed Airflow 環境的資源用量和健康狀態。

環境健康狀態

如要檢查環境健康狀態,可以使用下列健康狀態指標:

指標 API
環境健康度 composer.googleapis.com/environment/healthy

Managed Airflow 會執行名為 airflow_monitoring 的活躍度 DAG,該 DAG 會按照排程執行,並回報環境健康狀態,如下所示:

  • 如果活躍度 DAG 執行作業順利完成,健康狀態會是 True。
  • 如果活躍度 DAG 執行失敗,健康狀態會是 False。

liveness DAG 會儲存在 dags/ 資料夾中,並顯示在 Airflow UI 中。liveness DAG 的頻率和內容不可變更,且不得修改。對活躍度 DAG 所做的變更不會保留。

環境依附元件檢查

Managed Airflow 會定期檢查環境是否能連上運作所需的服務,以及是否有足夠的權限與這些服務互動。環境運作所需的服務包括 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 監控 Pod 每分鐘會對資料庫執行連線偵測 (ping),如果可以建立 SQL 連線,就會將健康狀態回報為 True,否則會回報為 False。

資料庫指標

Managed Airflow 環境使用的 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 執行個體的自動容錯移轉要求總數。

Worker 指標

下列環境指標適用於 Managed Airflow (第 3 代) 和 Managed Airflow (第 2 代) 環境中的 Airflow worker。

這項指標用於自動調度資源環境中的 worker 數量。水平 Pod 自動配置器會設定這項指標,然後 Airflow Worker Set Controller 環境元件會根據這項指標的值,增加或減少 Airflow worker 的數量。

Worker 指標 API
縮放比例係數目標 composer.googleapis.com/environment/worker/scale_factor_target

排程器指標

名稱 API 說明
使用中的排程器 composer.googleapis.com/environment/active_schedulers 使用中的排程器執行個體數量。

DAG 處理器指標

名稱 API 說明
使用中的 DAG 處理器 composer.googleapis.com/environment/active_dag_processors 執行中的 DAG 處理器執行個體數量。

觸發條件指標

名稱 API 說明
使用中的觸發條件 composer.googleapis.com/environment/active_triggerers 執行中的觸發條件執行個體數量。

網路伺服器指標

Managed Airflow 環境使用的 Airflow 網路伺服器,提供下列環境指標。您可以使用這些指標,查看環境 Airflow 網路伺服器執行個體的效能和資源用量。

名稱 API 說明
使用中的網路伺服器 composer.googleapis.com/environment/active_webservers 使用中的網路伺服器執行個體數量。

環境所用服務的配額

Managed Airflow 會使用其他 Cloud de Confiance by S3NS 服務。這些服務設有專案層級配額,會在您使用 Managed Airflow 時套用。

在 Managed Airflow (第 3 代) 中,環境的叢集位於租戶專案。Managed Airflow (第 3 代) 提供下列指標,可回報租戶專案中環境所用服務的配額用量和相應配額限制。

指標 API 說明
Managed Airflow 工作負載的 CPU 配額限制 composer.googleapis.com/environment/workloads_cpu_quota (僅限 Managed Airflow (第 3 代)) 環境使用的虛擬 CPU 總數,不得超過 Compute Engine CPU 分配配額。這項限制適用於每個環境。如果專案有多個 Managed Airflow (第 3 代) 環境,每個環境都有各自的配額限制。
Managed Airflow 工作負載的 CPU 配額用量 composer.googleapis.com/environment/workloads_cpu_quota_usage (僅限 Managed Airflow (第 3 代)) 環境使用 Compute Engine CPU 分配配額的情況。

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 執行器指標

Stackdriver 提供下列 Celery Executor 指標。這些指標可協助您判斷環境中的工作站資源是否充足。

Celery 執行器指標 API
佇列中的工作數量 composer.googleapis.com/environment/task_queue_length
線上 Celery worker 數量 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 數量。
服務水準協議未達標電子郵件通知失敗 composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure 未達服務水準協議電子郵件通知失敗次數。
執行器上的可用運算單元 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。
工作 heartbeat 失敗 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 排程器迴圈重要部分所花費的時間。一次只能有一個排程器進入這個迴圈。
重要區段鎖定失敗 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 排程器活動訊號。
排程器迴圈時間長度 composer.googleapis.com/workload/scheduler/loop_duration scheduler.scheduler_loop_duration.<hostname> 執行一個排程器迴圈所需的時間。
服務水準協議回呼失敗通知 composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure 未達服務水準協議時,回呼通知失敗的次數。
智慧感應器探測例外狀況失敗 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 預定開始日期與實際開始日期之間的延遲時間。
完成工作 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 工作在切換至「執行中」狀態前,處於「已排入佇列」狀態的時間。
工作 CPU 用量 composer.googleapis.com/workflow/task/cpu_usage task.cpu_usage.<dag_id>.<task_id> 工作使用的 CPU 百分比。
工作記憶體用量 composer.googleapis.com/workflow/task/mem_usage task.mem_usage.<dag_id>.<task_id> 工作使用的記憶體百分比。
已從 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 還原的工作數量 (即先前在資料庫中處於「已移除」狀態的工作執行個體,已新增至 DAG 檔案)。
工作排程延遲 composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> 從第一項工作的開始日期到 dagrun 預計開始時間之間經過的時間。
執行中的觸發條件總數 composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running 每個觸發器執行個體中執行中的觸發條件數量。
封鎖觸發條件 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 觸發條件至少觸發一個事件的次數。

使用 Monitoring 監控 Managed Airflow 環境

控制台

您可以使用 Metrics Explorer 顯示與環境和 DAG 相關的指標:

  • Cloud Composer 環境資源包含環境指標。

    如要顯示特定環境的指標,請依 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 警告

您可以建立警告政策來監控指標值,並在指標違反條件時收到通知。

  1. 前往 Cloud de Confiance 控制台的 「Alerting」(警告) 頁面:

    前往「Alerting」(警告)

    如果是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。

  2. 如果尚未建立通知管道,但想收到通知,請按一下「Edit Notification Channels」(編輯通知管道),新增通知管道。新增管道後,請返回「Alerting」(警告) 頁面。
  3. 在「Alerting」(警告) 頁面,選取「Create policy」(建立政策)。
  4. 如要選取指標,請展開「Select a metric」(選取指標) 選單,執行下列步驟:
    1. 如要限制選單只顯示相關項目,請在篩選列輸入 Cloud Composer。如果選單篩選後沒有任何結果,請停用「Show only active resources & metrics」(僅顯示使用中的資源和指標) 切換鈕。
    2. 在「Resource type」(資源類型) 部分,選取「Cloud Composer Environment」(Cloud Composer 環境) 或「Cloud Composer Workflow」(Cloud Composer 工作流程)。
    3. 選取「Metric category」(指標類別) 和「Metric」(指標),然後選取「Apply」(套用)。
  5. 點選「Next」(下一步)。
  6. 「Configure alert trigger」(設定警告觸發條件) 頁面中的設定會決定警告觸發時機。選取條件類型,視需要指定門檻。詳情請參閱「建立指標門檻警告政策」。
  7. 點選「Next」(下一步)。
  8. 選用:如要新增警告政策的通知,請按一下「Notification channels」(通知管道)。在對話方塊中,從選單選取一或多個通知管道,然後按一下「OK」(確定)。
  9. 選用:更新「Alert autoclose duration」(警告自動關閉期限)。這個欄位會決定 Monitoring 在沒有指標資料下關閉警告的時機。
  10. 選用:按一下「Documentation」(說明文件),新增要納入通知訊息的資訊。
  11. 按一下「Alert name」(警告名稱),輸入警告政策的名稱。
  12. 點按「建立政策」。
詳情請參閱「警告總覽」。

後續步驟