本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Glue 提供存取 Ray 程序在任務執行期間發出的日誌。如果您在 Ray 任務中遇到錯誤或非預期的行為,請先從日誌中收集資訊,用以判斷失敗的原因。我們還為互動式工作階段提供類似的日誌。工作階段日誌帶有 /aws-glue/ray/sessions
字首。
當您的任務執行時,日誌行會即時傳送至 CloudWatch。列印陳述式會在執行完成後附加至 CloudWatch 日誌中。任務執行後,日誌會保留兩週。
檢查 Ray 任務日誌
如果任務失敗,請收集任務名稱和任務執行 ID。您可以在 AWS Glue 主控台中找到這些項目。瀏覽至任務頁面,然後找到 Runs (執行) 索引標籤。Ray 任務日誌會存放在下列專用的 CloudWatch 日誌群組中。
-
/aws-glue/ray/jobs/script-log/
– 存放 Ray 主指令碼發出的日誌。 -
/aws-glue/ray/jobs/ray-monitor-log/
– 存放 Ray 自動縮放器程序發出的日誌。這些日誌是針對前端節點產生,而不是針對其他工作節點產生。 -
/aws-glue/ray/jobs/ray-gcs-logs/
:存放由 GCS (全域控制存放) 程序發出的日誌。這些日誌是針對前端節點產生,而不是針對其他工作節點產生。 -
/aws-glue/ray/jobs/ray-process-logs/
:存放在前端節點上執行的其他 Ray 程序 (主要是儀表板代理) 發出的日誌。這些日誌是針對前端節點產生,而不是針對其他工作節點產生。 -
/aws-glue/ray/jobs/ray-raylet-logs/
:存放每個 raylet 程序發出的日誌。系統會將這些日誌收集在每個工作節點的單一串流中,包括前端節點。 -
/aws-glue/ray/jobs/ray-worker-out-logs/
:將每個工作者的stdout
日誌存放在叢集中。這些日誌會針對每個工作節點 (包括前端節點) 產生。 -
/aws-glue/ray/jobs/ray-worker-err-logs/
:將每個工作者的stderr
日誌存放在叢集中。這些日誌會針對每個工作節點 (包括前端節點) 產生。 -
/aws-glue/ray/jobs/ray-runtime-env-log/
:存放有關 Ray 設定程序的日誌。這些日誌會針對每個工作節點 (包括前端節點) 產生。
對 Ray 任務錯誤進行故障診斷
若要了解 Ray 日誌群組的組織,並尋找可協助您針對錯誤進行故障診斷的日誌群組,取得 Ray 架構的背景資訊會很有幫助。
在 AWS Glue ETL 中,工作者會對應至執行個體。當您為 AWS Glue 任務設定工作者時,您要設定專用於任務的執行個體類型和數量。Ray 對 worker (工作、工作者) 一詞的使用方式有所不同。
Ray 使用前端節點和工作節點來區分 Ray 叢集中執行個體的責任。Ray 工作節點可以託管多個執行者程序,這些程序會執行計算以實現分佈式計算的結果。執行函數複本的執行者稱為複本。複本執行者也可以稱為工作者程序。複本也可以在前端節點 (稱為前端) 上執行,因為該節點會執行額外的程序來協調叢集。
參與計算的每個執行者會產生自己的日誌串流。這為我們提供了一些見解:
-
發出日誌的程序數目可能大於配置給任務的工作者數目。通常,每個執行個體上的每個核心都有一個執行者。
-
Ray 前端節點會發出叢集管理和啟動日誌。相對地,Ray 工作節點只會針對在其上執行的工作發出日誌。
如需有關 Ray 架構的詳細資訊,請參閱 Ray 文件中的 Architecture Whitepapers
問題領域:Amazon S3 存取
檢查任務執行的失敗訊息。如果提供的資訊不足,請查閱 /aws-glue/ray/jobs/script-log/
。
問題領域:PIP 相依性管理
檢查 /aws-glue/ray/jobs/ray-runtime-env-log/
。
問題領域:檢查主程序中的中繼值
從主指令碼中寫入 stderr
或 stdout
,並從 /aws-glue/ray/jobs/script-log/
擷取日誌。
問題領域:檢查子程序中的中繼值
從 remote
函數寫入 stderr
或 stdout
。然後,從 /aws-glue/ray/jobs/ray-worker-out-logs/
或 /aws-glue/ray/jobs/ray-worker-err-logs/
擷取日誌。函數可能已在任何複本上執行,因此您可能必須檢查多個日誌才能找到預期的輸出。
問題領域:解譯錯誤訊息中的 IP 地址
在某些錯誤情況下,您的任務可能會發出包含 IP 地址的錯誤訊息。這些 IP 地址是暫時的資訊,叢集會用於識別節點並在節點之間進行通訊。節點的日誌會發布至日誌串流,其具有以 IP 地址為基礎的唯一字尾。
在 CloudWatch 中,您可以透過識別此字尾來篩選日誌,以檢查特定於此 IP 地址的日誌。例如,假設為 FAILED_IP
和 JOB_RUN_ID
,您可以透過以下方式識別字尾:
filter @logStream like /
JOB_RUN_ID
/ | filter @message like /IP-/ | parse @message "IP-[*]" as ip | filter ip like /FAILED_IP
/ | fields replace(ip, ":", "_") as uIP | stats count_distinct by uIP as logStreamSuffix | display logStreamSuffix