在 Cromwell Server 配置完成后,如何快捷的進行提交、停止工作流、流程失敗后如何快速定位問題以及工作流完成后如何快速查看運行日志、查看工作流的 Metrics 信息、工作流產生的費用等手段,這些問題就變成了 server 運維工作的基本訴求。
Cromwell 以 server 的方式運行后是支持通過 API 接口獲取以上信息的,但是有二次開發的工作量;而 widdler 是針對 Cromwell Server API 接口開發的命令行工具,通過 widdler 命令行工具減少運維成本。
本文主要介紹阿里云對 widdler 工具的擴展,通過 widdler 工具查詢指定工作流的作業運行狀態、后端引擎的運行時信息、費用查詢、問題定位調查以及子任務日志查看等功能。
1. widdler 安裝
widdler 默認在阿里云批量計算提供的 Cromwell server 鏡像中安裝。可以直接使用,無需做安裝操作。
2. 配置 widdler
由于涉及到個人阿里云運行數據的查詢,需要在使用之前設置對應賬號的 AK 信息、以及后端執行引擎所部署的region信息。
命令格式:
widdler config -i id -k key -r cn-zhangjiakou
3. 校驗 WDL
提交工作流之前對 WDL 做語法校驗,排除部分低級問題;減少后續提交工作流后由于低級問題導致的流程失敗。
命令格式:
widdler validate echo.wdl inputs.json
4. 提交工作流
命令格式:
widdler run echo.wdl inputs.json -l test
其中:test 為 label,可以根據樣本進行打標簽,后續可以按 label 做過濾。
5. 終止工作流
命令格式:
widdler abort workflowId
6. 獲取工作流
6.1 獲取工作流列表
命令格式:
widdler query
其中:默認獲取當前 user 7 天內的工作流信息;可以根據 user label等信息來篩選工作流信息;其他使用方法參考 help 信息。
6.2 獲取工作流 Meta
命令格式:
widdler query workflowId
7. 獲取工作流運行狀態
命令格式:
widdler describe workflowId
其中:”stepName” 表示工作流的某個自步驟的名稱;”status” 表示當前步驟的運行狀態”成功、失敗、運行中”;”progress” 表示當前步驟的進度,如”4/4” 表示當前步驟存在4個子任務全部執行完成; 若是”2/4” 則表示當前步驟存在4個任務,已經完成2個。”elapse”表示當前步驟的所有子任務執行總耗時時間(不包括機器的啟動時間); “coretime”表示當前步驟所有子任務消耗的核時時間(不包括機器的啟動時間)。
命令格式:
widdler describe workflowId -t stepName
shardIndex 是 Cromwell 將每個 task 的子任務按 shardIndex 做索引,對應的是批量計算的一個作業。通過該命令可以看到指定 task 對應的統計信息。
8. 獲取工作流統計信息
命令格式:
widdler stat workflowId
其中:”cpuCore” 表示當前步驟中使用對應實例的 CPU 核數,”cpuUsage” 表示當前步驟所有任務從開始到當前(若當前任務結束狀態則表示從開始到結束)的 CPU 平均利用率;”memSize” 表示當前步驟中使用對應實例的內存大小,”memUsage” 表示當前步驟中所有任務從開始到當前的MEM平均利用率;”sysDisk” 表示當前步驟實例的系統盤大小(默認 40GB),”sysDiskUsage” 表示當前步驟的所有任務在當前時間點的磁盤平均利用率;”dataDisk” 表示實例的數據盤大小(默認沒有),”dataDiskUsage” 表示當前步驟的所有任務在當前時間點的磁盤平均利用率。
命令格式:
widdler stat workflowId -t stepName
查詢某個步驟對應的 Metrics 信息;可能某個步驟存在多個 scatter,那么每個 scatter 運行情況如何,則可以通過本命令獲取到。
9. 獲取工作流費用
命令格式:
widdler billing workflowId
10. 獲取工作流運行日志
命令格式:
widdler log workflowId
通過 log 查詢命令,可以查看工作流的實際運行情況,執行過程是否符合預期可以通過該命令做到一鍵查看。stdout 以及 stderr 日志小于 1MB 的,會直接在屏幕上顯示出來;超過 1MB 的需要借助 OSS 工具查看。
11. 工作流問題定位
命令格式:
widdler explain workflowId
通過該命令可以一鍵查詢工作流失敗的原因,展示出現問題的步驟,輸出該步驟的對應失敗任務的 stdout 以及 stderr 信息,快速排查問題。
更多其他功能請參考 widdler 的幫助信息