天天看點

Flink常用監控API

通常,我們可以通過Flink WebUI來檢視和監控Flink任務的運作狀态,如圖

Flink常用監控API

但如果我們要基于Flink自建一個實時計算平台,則不能依賴于Flink WebUI,而需要自己實作Flink任務狀态的檢視和監控了。

實際上,Flink有一套自己的監控REST API,Flink WebUI也是基于這套監控API實作的,我們可以通過調用叢集位址+Flink監控API,來實作跟Flink WebUI一樣的功能。

叢集位址在上圖中是http://hadoop-master:8088/proxy/applicationId,常用的Flink監控REST API如下:

請求方法 接口 功能 參數
GET /jobmanager/config 擷取叢集配置
GET /jobmanager/metrics 擷取JM的metrics get:擷取指定metric的值,有多個值時用逗号隔開
GET /jobs
GET /jobs/metrics 擷取所有任務的metrics get:擷取指定metric的值,有多個值時用逗号隔開;其他支援參數:agg、jobs
GET /jobs/overview 擷取所有任務的概況
GET /jobs/:jobid 擷取指定jobid的任務詳情 jobid(例如e0e129bfb8c68d6a774d493e2d8f0ada)
GET /jobs/:jobid/checkpoints 擷取指定jobid的檢查點統計資訊 jobid
GET /jobs/:jobid/checkpoints/config 擷取指定jobid的檢查點配置 jobid
GET /jobs/:jobid/checkpoints/details/:checkpointid 擷取指定jobid和checkpointid的檢查點詳情 jobid、checkpointid
GET /jobs/:jobid/config 擷取指定jobid的任務配置 jobid
GET /jobs/:jobid/exceptions 擷取指定jobid的異常資訊 jobid、maxExceptions
GET /jobs/:jobid/metrics 擷取指定jobid的metrics jobid
GET /jobs/:jobid/vertices/:vertexid 擷取指定jobid和vertexid的算子節點的資訊 jobid、vertexid(例如bc764cd8ddf7a0cff126f51c16239658)
GET /jobs/:jobid/vertices/:vertexid/backpressure 擷取指定jobid和vertexid的算子節點的反壓情況 jobid、vertexid
GET /jobs/:jobid/vertices/:vertexid/taskmanagers 擷取任務管理器彙總的任務資訊 jobid、vertexid
GET /overview 擷取叢集概況
GET /taskmanagers 擷取所有TM的概況
GET /taskmanagers/metrics 擷取TM的metrics get:擷取指定metric的值,有多個值時用逗号隔開
GET /taskmanagers/:taskmanagerid 擷取指定taskmanagerid的詳情 taskmanagerid(例如container_1600830023237_0002_01_000002)
GET /taskmanagers/:taskmanagerid/metrics 擷取指定taskmanagerid的metrics taskmanagerid
POST /jobs/:jobid/stop 停止指定jobid的任務,并儲存一個savepoint jobid、drain(預設false)、targetDirectory(savepoint存儲位置)
GET /jobs/:jobid/yarn-cancel 停止指定jobid的任務 jobid

踩坑:使用POST請求調用接口/jobs/:jobid/stop時,報錯405 HTTP method POST is not supported by this URL

原因:從http://hadoop-master:8088/proxy/application_1606890926991_0001/#/overview的proxy就可以看出,我們是通過Yarn的代理來通路Flink監控API的。這時候使用POST請求調用接口/jobs/:jobid/stop,會出現302跳轉,而302跳轉的時候會更改請求方法,此時服務端可能不能識别,則報405錯誤。

解決:改用GET /jobs/:jobid/yarn-cancel來停止Flink任務

更多Flink監控接口詳見:

Flink監控REST API(官方文檔)

Yarn RM REST API(Flink on Yarn使用)

繼續閱讀