Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
您可以搭配 Cloud Monitoring 和 Cloud Logging 使用 Cloud Composer。
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 產生的記錄。
環境指標
您可以使用環境指標,檢查 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_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
|
觸發至少一個事件的觸發條件數量。 |
在 Cloud Composer 環境中使用 Monitoring
主控台
您可以使用 Metrics Explorer 顯示與環境和 DAG 相關的指標:
API 和 gcloud
您可以透過 Cloud Monitoring API 和 gcloud monitoring dashboards
指令,建立及管理自訂資訊主頁和小工具。詳情請參閱「使用 API 管理資訊主頁」。
如要進一步瞭解資源、指標和篩選器,請參閱 Cloud Monitoring API 的參考資料:
使用 Cloud Monitoring 快訊
您可以建立快訊政策來監控指標值,並在指標違反條件時收到通知。
-
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 如果您尚未建立通知管道,但想收到通知,請按一下「編輯通知管道」,然後新增通知管道。新增管道後,返回「快訊」頁面。
- 在「Alerting」(快訊) 頁面中,選取「Create policy」(建立政策)。
- 如要選取指標,請展開「選取指標」選單,然後執行下列操作:
- 如要將選單限制為相關項目,請在篩選列中輸入
Cloud Composer
。如果篩選選單後沒有顯示任何結果,請停用「僅顯示活躍的資源和指標」切換按鈕。 - 在「Resource type」(資源類型) 部分,選取「Cloud Composer Environment」(Cloud Composer 環境) 或「Cloud Composer Workflow」(Cloud Composer 工作流程)。
- 選取「指標類別」和「指標」,然後選取「套用」。
- 如要將選單限制為相關項目,請在篩選列中輸入
- 點選「下一步」。
- 「設定快訊觸發條件」頁面中的設定會決定快訊的觸發時機。 選取條件類型,並視需要指定門檻。詳情請參閱建立指標閾值快訊政策。
- 點選「下一步」。
- 選用:如要新增通知至您的快訊政策,請按一下「通知管道」。在對話方塊中,從選單選取一或多個通知管道,然後按一下「確定」。
- 選用:更新「事件自動關閉期限」。這個欄位會決定 Monitoring 何時會在沒有指標資料的情況下關閉事件。
- 選用:按一下「說明文件」,然後在通知訊息中新增任何資訊。
- 按一下「快訊名稱」,然後輸入快訊政策的名稱。
- 點選「建立政策」。