Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)
您可以搭配使用 Cloud Monitoring 和 Cloud Logging 與 Managed Service for Apache Airflow。
Cloud Monitoring 可讓您掌握雲端應用程式的效能、運作時間和整體健康狀態。Cloud Monitoring 會從 Managed Airflow 收集和擷取指標、事件和中繼資料,並在資訊主頁和圖表中產生深入分析資料。您可以使用 Cloud Monitoring 瞭解 Managed Airflow 環境和 Airflow 指標的效能和健康狀態。
Logging 會擷取環境叢集中排程器和工作站容器產生的記錄檔。這些記錄包含系統層級和 Airflow 依附元件資訊,有助於進行偵錯。如要瞭解如何查看記錄,請參閱「查看 Airflow 記錄」。
事前準備
如要存取 Managed Airflow 環境的記錄和指標,必須具備下列權限:
- 記錄和指標的唯讀存取權:
logging.viewer和monitoring.viewer - 記錄的唯讀存取權,包括私密記錄:
logging.privateLogViewer - 指標讀取/寫入權限:
monitoring.editor
如要進一步瞭解 Managed Airflow 的其他權限和角色,請參閱「存取權控管」。
- 記錄和指標的唯讀存取權:
為避免重複記錄,系統已停用 Google Kubernetes Engine 的 Cloud Logging。
Cloud Logging 會為專案中發生的每個狀態和事件產生記錄項目。 Google Cloud 您可以使用排除篩選器減少記錄量,包括 Cloud Logging 為 Managed Airflow 產生的記錄。
環境指標
您可以使用環境指標,檢查 Managed Airflow 環境的資源用量和健康狀態。
環境健康狀態
如要檢查環境的健康狀態,可以使用下列健康狀態指標:
| 指標 | API |
|---|---|
| 環境的健康狀態 |
composer.googleapis.com/environment/healthy |
Managed Airflow 會執行名為 airflow_monitoring 的存活 DAG,該 DAG 會依排程執行,並回報環境健康狀態,如下所示:
- 如果存活 DAG 執行作業順利完成,健康狀態為
True。 - 如果執行中的 DAG 失敗,健康狀態為
False。
存活 DAG 會儲存在 dags/ 資料夾中,並顯示在 Airflow UI 中。存活 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 執行個體自動容錯移轉要求總數。 |
工作人員指標
在 Managed Airflow (第 3 代) 和 Managed Airflow (第 2 代) 環境中,可用的 Airflow 工作人員環境指標如下。
這項指標用於自動調度環境中的工作站數量。水平 Pod 自動調度器會設定這項指標,然後 Airflow Worker Set Controller 環境元件會根據這項指標的值,調度 Airflow 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 會使用其他 Google Cloud 服務。這些服務都有專案層級配額,適用於您使用 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 工作站數量 |
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 bag 大小 |
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。 |
| 工作心跳失敗 |
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/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
|
已觸發至少一個事件的觸發條件數量。 |
使用 Monitoring 監控 Managed Airflow 環境
控制台
您可以使用 Metrics Explorer 顯示與環境和 DAG 相關的指標:
API 和 gcloud
您可以透過 Cloud Monitoring API 和 gcloud monitoring dashboards 指令,建立及管理自訂資訊主頁和小工具。詳情請參閱「使用 API 管理資訊主頁」。
如要進一步瞭解資源、指標和篩選器,請參閱 Cloud Monitoring API 的參考資料:
使用 Cloud Monitoring 快訊
您可以建立警告政策來監控指標值,並在指標違反條件時收到通知。
-
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
如果是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 如果尚未建立通知管道,但想收到通知,請按一下「Edit Notification Channels」(編輯通知管道),新增通知管道。新增管道後,請返回「Alerting」(警告) 頁面。
- 在「Alerting」(警告) 頁面,選取「Create policy」(建立政策)。
- 如要選取指標,請展開「Select a metric」(選取指標) 選單,執行下列步驟:
- 如要限制選單只顯示相關項目,請在篩選列輸入
Cloud Composer。如果選單篩選後沒有任何結果,請停用「Show only active resources & metrics」(僅顯示使用中的資源和指標) 切換鈕。 - 在「Resource type」(資源類型) 部分,選取「Cloud Composer Environment」(Cloud Composer 環境) 或「Cloud Composer Workflow」(Cloud Composer 工作流程)。
- 選取「Metric category」(指標類別) 和「Metric」(指標),然後選取「Apply」(套用)。
- 如要限制選單只顯示相關項目,請在篩選列輸入
- 點選「Next」(下一步)。
- 「Configure alert trigger」(設定警告觸發條件) 頁面中的設定會決定警告觸發時機。選取條件類型,視需要指定門檻。詳情請參閱「建立指標門檻警告政策」。
- 點選「Next」(下一步)。
- 選用:如要新增警告政策的通知,請按一下「Notification channels」(通知管道)。在對話方塊中,從選單選取一或多個通知管道,然後按一下「OK」(確定)。
- 選用:更新「Alert autoclose duration」(快訊自動關閉期限)。這個欄位會決定在缺少指標資料時,監控服務何時會關閉快訊。
- 選用:按一下「Documentation」(說明文件),新增要納入通知訊息的資訊。
- 按一下「Alert name」(警告名稱),輸入警告政策的名稱。
- 點按「建立政策」。