使用 Cloud Monitoring 監控環境

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

您可以搭配 Cloud MonitoringCloud Logging 使用 Cloud Composer。

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

Logging 會擷取環境叢集中排程器和工作站容器產生的記錄。這些記錄包含系統層級資訊與 Airflow 相依性資訊,可協助您進行偵錯。如要瞭解如何查看記錄,請參閱「查看 Airflow 記錄」。

事前準備

  • 如要存取 Cloud Composer 環境的記錄和指標,您必須具備下列權限:

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

    如要進一步瞭解 Cloud Composer 的其他權限和角色,請參閱存取權控管一文。

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

  • Cloud Logging 會為每個狀態和 Google Cloud 專案中發生的每個事件分別產生一個項目。您可以使用排除篩選器減少記錄量,包括 Cloud Logging 為 Cloud Composer 產生的記錄。

環境指標

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

環境健康狀態

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

指標 API
環境的健康狀態 composer.googleapis.com/environment/healthy

Cloud Composer 會執行名為 airflow_monitoring 的存活 DAG,該 DAG 會依排程執行,並回報環境健康狀態,如下所示:

  • 如果存活 DAG 執行作業順利完成,健康狀態會顯示為 True
  • 如果執行中的 DAG 執行作業失敗,健康狀態為 False

存活 DAG 會儲存在 dags/ 資料夾中,並顯示在 Airflow UI 中。Liveness DAG 的頻率和內容不可變更,且不得修改。對即時 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 監控 Pod 每分鐘會對資料庫執行 Ping 作業,並回報健康狀態。如果可以建立 SQL 連線,狀態為 True;如果無法建立,狀態則為 False

資料庫指標

下列環境指標適用於 Cloud Composer 環境使用的 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 執行個體自動容錯移轉要求總數。

工作人員指標

在 Cloud Composer 3 和 Cloud Composer 2 環境中,Airflow 工作站可使用下列環境指標。

這項指標可用於自動調整環境中的工作站數量。水平 Pod 自動調度器會設定這項指標,然後 Airflow Worker Set Controller 環境元件會根據這項指標的值,調高或調低 Airflow 工作站的數量。

工作人員指標 API
目標縮放比例係數 composer.googleapis.com/environment/worker/scale_factor_target

排程器指標

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

觸發器指標

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

網路伺服器指標

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

舉例來說,如果網頁伺服器經常接近資源上限,您可能需要提高網頁伺服器的規模和效能參數

名稱 API 說明
使用中的網路伺服器 composer.googleapis.com/environment/active_webservers 有效網路伺服器執行個體數量。
網路伺服器 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

環境使用的服務配額

Cloud Composer 會使用其他 Google Cloud 服務,這些服務都有專案層級配額,適用於您使用 Cloud Composer 的情況。

在 Cloud Composer 3 中,環境的叢集位於租戶專案中。Cloud Composer 3 提供下列指標,用於回報租戶專案中環境使用的服務配額用量和對應配額限制。

指標 API 說明
Cloud Composer 工作負載的 CPU 配額上限 composer.googleapis.com/environment/workloads_cpu_quota (僅限 Cloud Composer 3) 環境使用的虛擬 CPU 總數的 Compute Engine CPU 分配配額。這項限制適用於每個環境。如果專案有多個 Cloud Composer 3 環境,每個環境都有自己的配額上限。
Cloud Composer 工作負載的 CPU 配額用量 composer.googleapis.com/environment/workloads_cpu_quota_usage (僅限 Cloud Composer 3) 環境使用的 Compute Engine CPU 分配配額。

DAG 指標

為協助您監控 DAG 執行效率,並找出導致高延遲的工作,Stackdriver 提供下列 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 指標

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

Celery Executor 指標 API
佇列中的工作數量 composer.googleapis.com/environment/task_queue_length
線上 Celery 工作站的數量 composer.googleapis.com/environment/num_celery_workers

Airflow 指標

Stackdriver 提供下列 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_failuresti_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 排程器迴圈重要部分所花費的時間。一次只能有一個排程器進入這個迴圈。
重大區段鎖定失敗 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.clearedscheduler.orphaned_tasks.adopted 排程器清除/採用的孤立工作數。
執行中/閒置/可執行的工作 composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.runningscheduler.tasks.starvingscheduler.tasks.executable 執行中/閒置/可執行的工作數量。
排程器活動訊號 composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat 排程器活動訊號。
服務水準協議回呼通知失敗 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 開始日期與實際 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 還原的任務數量 (也就是先前在資料庫中處於 REMOVED 狀態的任務執行個體,已新增至 DAG 檔案)。
工作排程延遲 composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> 第一個工作 start_date 與 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 觸發至少一個事件的觸發條件數量。

在 Cloud Composer 環境中使用 Monitoring

主控台

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

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

    如要顯示特定環境的指標,請依 environment_name 標籤篩選指標。您也可以依其他標籤篩選,例如環境位置或圖片版本。

  • 「Cloud Composer Workflow」資源包含 DAG 的指標。

    如要顯示特定 DAG 或工作的指標,請依 workflow_nametask_name 標籤篩選指標。您也可以依其他標籤篩選,例如工作狀態或 Airflow 運算子名稱。

API 和 gcloud

您可以透過 Cloud Monitoring API 和 gcloud monitoring dashboards 指令,建立及管理自訂資訊主頁和小工具。詳情請參閱「使用 API 管理資訊主頁」。

如要進一步瞭解資源、指標和篩選器,請參閱 Cloud Monitoring API 的參考資料:

使用 Cloud Monitoring 快訊

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

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

    前往「Alerting」(快訊)

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

  2. 如果您尚未建立通知管道,但想收到通知,請按一下「編輯通知管道」,然後新增通知管道。新增管道後,返回「快訊」頁面。
  3. 在「Alerting」(快訊) 頁面中,選取「Create policy」(建立政策)
  4. 如要選取指標,請展開「選取指標」選單,然後執行下列操作:
    1. 如要將選單限制為相關項目,請在篩選列中輸入 Cloud Composer。如果篩選選單後沒有顯示任何結果,請停用「僅顯示活躍的資源和指標」切換按鈕。
    2. 在「Resource type」(資源類型) 部分,選取「Cloud Composer Environment」(Cloud Composer 環境) 或「Cloud Composer Workflow」(Cloud Composer 工作流程)
    3. 選取「指標類別」和「指標」,然後選取「套用」
  5. 點選「下一步」
  6. 「設定快訊觸發條件」頁面中的設定會決定快訊的觸發時機。 選取條件類型,並視需要指定門檻。詳情請參閱建立指標閾值快訊政策
  7. 點選「下一步」
  8. 選用:如要新增通知至您的快訊政策,請按一下「通知管道」。在對話方塊中,從選單選取一或多個通知管道,然後按一下「確定」
  9. 選用:更新「事件自動關閉期限」。這個欄位會決定 Monitoring 何時會在沒有指標資料的情況下關閉事件。
  10. 選用:按一下「說明文件」,然後在通知訊息中新增任何資訊。
  11. 按一下「快訊名稱」,然後輸入快訊政策的名稱。
  12. 點選「建立政策」
詳情請參閱「快訊總覽」。

後續步驟