Flink常用监控API

通常可通过Flink WebUI监控任务状态,但自建实时计算平台需自己实现。Flink有监控REST API,Flink WebUI基于此实现,可通过集群地址加API实现相同功能。使用POST请求调用接口会报错,原因是Yarn代理访问时302跳转更改请求方法,解决办法是改用其他方式停止任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常,我们可以通过Flink WebUI来查看和监控Flink任务的运行状态,如图

Flink WebUI
但如果我们要基于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的metricsget:获取指定metric的值,有多个值时用逗号隔开
GET/jobs获取所有任务id及其运行状态
GET/jobs/metrics获取所有任务的metricsget:获取指定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的metricsjobid
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的metricsget:获取指定metric的值,有多个值时用逗号隔开
GET/taskmanagers/:taskmanagerid获取指定taskmanagerid的详情taskmanagerid(例如container_1600830023237_0002_01_000002)
GET/taskmanagers/:taskmanagerid/metrics获取指定taskmanagerid的metricstaskmanagerid
POST/jobs/:jobid/stop停止指定jobid的任务,并保存一个savepointjobid、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/#/overviewproxy就可以看出,我们是通过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使用)

### Flink 延迟监控的配置与优化 #### 1. 配置延迟监控 要在 Apache Flink 中实现延迟监控,可以利用其内置的 Metrics 系统来收集和报告延迟数据。通过调整 `flink-conf.yaml` 文件中的参数,能够启用并自定义这些功能。 - **启用 Metrics 报告器** 在 `flink-conf.yaml` 文件中,需指定至少一种 Metric Reporter 来导出延迟和其他性能指标的数据。例如,Prometheus 是常用的开源监控工具之一,支持从 Flink 获取实时指标[^2]。 ```yaml metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter ``` - **设置缓冲区超时 (Buffer Timeout)** 缓冲区超时直接影响吞吐量和延迟之间的平衡。较短的超时会减少延迟但降低吞吐量;较长的超时则提高吞吐量而增加潜在的最大延迟[^3]。推荐先基于实际需求设定合理的初始值(如默认的 100ms),再逐步微调以找到最佳折衷点。 ```yaml taskmanager.network.memory.buffer-timeout: 100 # 单位为毫秒 ``` - **采集 Event Time 和 Processing Time 差异** 如果应用程序依赖于事件时间处理,则应特别关注 event time lag ——即 processing time 减去 watermarks 的差值。这可通过如下方式计算得出: ```java DataStream<Tuple2<String, Long>> streamWithLag = inputStream .map(new MapFunction<MyEvent, Tuple2<String, Long>>() { @Override public Tuple2<String, Long> map(MyEvent value) throws Exception { long currentProcessingTime = System.currentTimeMillis(); long eventTimestamp = value.getTimestamp(); // 假设 MyEvent 类中有 getTimestamp 方法 return new Tuple2<>("lag", currentProcessingTime - eventTimestamp); } }); ``` #### 2. 排查性能问题 当发现高延迟或其他异常情况时,可按照以下方法定位原因: - **分析 Backpressure 情况** 使用 REST APIWeb UI 查看是否存在 backpressure 节点。如果某些算子长期处于 HIGH_BACKPRESSURE 状态,则表明下游无法及时消费上游产生的数据流[^4]。 ```bash curl http://<job-manager-host>:8081/jobs/<job-id>/vertices/<vertex-id>/backPressure | jq . ``` - **检查 Checkpoint Duration 及 Frequency** 过长或者过于频繁的 checkpoint 操作可能会显著拖慢整个流水线的速度。建议定期审查 checkpoint 统计信息,并适当延长 interval 时间间隔或减小 state size[^1]。 ```yaml execution.checkpointing.interval: 60000 # 设置每分钟触发一次checkpoint state.backend.incremental: true # 启用增量保存模式节省存储空间 ``` - **评估 Parallelism 设定合理性** 不恰当的任务并发度也可能引发资源争抢现象进而造成额外开销。务必依据硬件规格合理分配 slot 数目以及各 stage 执行单元数量。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值