天天看点

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使用)

继续阅读