第一次打开Flink的dashboard的时候,我也被那一堆花花绿绿的图表整懵了。
在这里插入图片描述

JobManager、TaskManager、Job、Task、Operator,各种名词堆在一起,直接晕了。后来学习了几年 Flink,才慢慢摸清门道。

Flink到底是个啥架构?

说实话,用Flink写SQL的人不少,但底层怎么跑的真没几个清楚。面试官问你架构答不上来?先把这张表记住。

角色干啥的
JobManager老大,调度任务
TaskManager干活的,跑数据
ResourceManager管资源的
Dispatcher接客,收请求

你提交一个Job,Dispatcher接过来,JobManager调度,TaskManager执行。Standalone模式下你自己管机器,K8s或YARN的话集群管理器帮你管。部署模式对监控页面没啥影响,看起来都一样。

监控粒度有多细?

Flink监控分好几层,我画了个表:

监控层次看啥
Job 级别整个作业的状态、吞吐量
Task 级别单个Task的执行时间
Operator 级别算子处理逻辑的细节
集群级别整个集群的资源使用
系统级别CPU、内存、磁盘、网络

平时我看的最多的就是Job级别和集群级别。Task和Operator的,是出了问题的时候才会去看。你想啊,正常跑的时候看那些细粒度指标干嘛?

Metrics系统是干啥的?

Flink内置了一个Metrics系统,就是收集指标用的。主要有这几种:

  • Counter:计数器,处理了多少条数据
  • Gauge:仪表盘,当前值是多少
  • Meter:速率,每秒处理多少条
  • Histogram:分布,延迟分布长啥样

这些数据通过MetricReporter发送到Prometheus、InfluxDB、Grafana等地方。MetricGroup用来分组,不然指标混在一起看不过来。

打开dashboard之后看什么?

打开后几个页面:

Overview

最核心的总览页。能看到:

  • 多少个TaskManager在跑
  • 多少Slot可用/已用
  • 正在运行的Job列表
  • 最近完成的Job

这里TaskManager数量少了,说明有机器挂了,一眼就能看出来。

Jobs

所有Job的状态:

状态啥情况
RUNNING正常跑着
FINISHED跑完了
FAILED挂了,赶紧查
CANCELED被人为取消的

看到FAILED我心都会咯噔一下。点进去看Exceptions,一般都能找到原因。

Job详情页

排查问题的核心战场。里面有几个tab:

  • Timeline:执行时间线
  • Exceptions:异常信息
  • Configuration:配置参数
  • Task列表:各个Task的状态

我排查问题就三步:先看Exceptions,再看Timeline,最后看Task指标。

TaskManager页面

看每个TaskManager的资源使用:

  • CPU使用率:某个Task Manager一直飙高,可能有热点数据倾斜
  • 内存使用:JVM Heap、Direct Memory、Managed Memory
  • 网络使用:数据吞吐量

几个特别好用的功能

Backpressure可视化

这个功能太实用了。下游处理不过来,上游就会产生反压。Web UI上显示颜色:

颜色状态
绿色正常
黄色轻微反压
红色严重反压,赶紧处理

Checkpoint监控

Checkpoint是Flink的最重要的东西。我主要看这几个指标:

  • Duration:一次Checkpoint花了多久
  • Size:Checkpoint数据有多大
  • Failed count:失败次数

要是Duration经常接近timeout阈值,说明状态太大,或者RocksDB Compaction占了时间。

Watermark

Watermark的处理乱序数据用的。Web UI可以查看每个Operator的Watermark情况。

Watermark一直不推进?那说明有数据迟到了,或者某个并行度卡住了。

Subtask分布

看看Task在各个TaskManager上的分布。数据倾斜的话,某些Subtask的数据量会远大于其他。

我有一次就是Key设计不合理,热点Key太多。加了随机前缀后才解决。

说点实在的

指标再多你也看不过来。我认为:

  1. Job状态和吞吐量——最直观
  2. Exceptions和Timeline——定位快
  3. 反压和Checkpoint——大部分问题跟这俩有关
  4. 不要过度优化——看到CPU高了就调参数,越调越差

我最开始用Flink的时候,总觉得要把所有指标都搞懂才算会了。后来才明白,指标看懂几个关键的就够了,剩下的用到再查。

更多推荐