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 指標。
記錄會擷取環境叢集中排程器和工作站容器產生的記錄。這些記錄包含系統層級資訊與 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 中。生命週期 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 中繼資料庫。您可以使用這些指標監控環境資料庫執行個體的效能和資源使用情形。
舉例來說,如果環境即將達到資源上限,您可能需要升級環境的 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 執行個體的自動容錯要求總數。 |
工作者指標
在 Cloud Composer 3 和 Cloud Composer 2 環境中,Airflow 工作站可使用下列環境指標。
這項指標可用於自動調度環境中的工作站數量。水平 Pod 自動調度器會設定這個指標,然後 Airflow Worker Set Controller 環境元件會根據這個指標的值,調整 Airflow worker 數量。
worker 指標 | 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 指標
可用的 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
|
排程器活動訊號。 |
失敗的 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 復原的工作數量 (也就是先前在資料庫中處於「已移除」狀態的工作例項,已新增至 DAG 檔案)。 |
工作排程延遲 |
composer.googleapis.com/workflow/task/schedule_delay
|
dagrun.schedule_delay.<dag_id>
|
第一個工作日期_開始日期與 DAG 執行作業預期開始時間之間的時間差距。 |
執行中的觸發條件總數 |
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
|
觸發至少一項事件的觸發條件數量。 |
在 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」的結果。
- 如果您尚未建立通知管道,但想收到通知,請按一下「Edit Notification Channels」(編輯通知管道),然後新增通知管道。加入管道後,請返回「Alerting」頁面。
- 在「Alerting」頁面中,選取「Create policy」。
- 如要選取指標,請展開「選取指標」選單,然後按照下列步驟操作:
- 如要將選單限制為相關項目,請在篩選列中輸入
Cloud Composer
。如果篩選選單後沒有任何結果,請停用「僅顯示活躍的資源和指標」切換按鈕。 - 在「Resource type」(資源類型) 中,選取「Cloud Composer Environment」(Cloud Composer 環境) 或「Cloud Composer Workflow」(Cloud Composer 工作流程)。
- 選取「指標類別」和「指標」,然後選取「套用」。
- 如要將選單限制為相關項目,請在篩選列中輸入
- 點選「下一步」。
- 「Configure alert trigger」頁面中的設定會決定快訊觸發的時機。 選取條件類型,並視需要指定門檻值。詳情請參閱「建立以指標門檻為基礎的警告政策」一文。
- 點選「下一步」。
- 選用步驟:如要新增通知至快訊政策,請按一下「通知管道」。在對話方塊中,從選單中選取一或多個通知管道,然後按一下「OK」。
- 選用:更新「Incident autoclose duration」。這個欄位會決定 Monitoring 在沒有指標資料時關閉事件的時間。
- 選用步驟:按一下「說明文件」,然後輸入您希望在通知訊息中顯示的資訊。
- 按一下「快訊名稱」,然後輸入快訊政策的名稱。
- 點選「建立政策」。