数据曲线
该模块主要提供任务运行的一些数据曲线图,帮助运维人员分析任务的健康情况。
常用指标解释
FailOver History
Failover曲线显示当前Job出现Failover(错误或者异常)的频率。计算方法为当前Failover时间点的前1分钟内出现Failover的累计次数除以60。(例如 ,最近1分钟Failover了一次,Failover的值为1/60=0.01667。)
业务延时(FlinkSQL/Flink任务)
业务延时 = 当前系统时间 — 当前系统处理的最后一条数据的事件时间(Event time)。如果后续没有数据再进入上游存储,由于当前系统时间在不断往前推进,业务延时也会随之逐渐增大。
note- 底层计算逻辑是针对Source的单个分区(Shard/Partition等)进行计算,然后汇报所有分区中的最大值呈现到前端页面上,因此前端页面上显示的汇聚后的数据间隔时间并不精确等于业务延时 — 数据滞留时间。
- 当数据间隔时间小于10秒时,会将数据间隔时间设置为0,进行上报。来均衡分区计算、汇总、取最大值的计算消耗时间。
- 如果Source中的某个分区没有新的数据,也将会导致业务延迟逐渐增大。
BPS/RPS/TPS
BPS(Byte Per Second):如果是Source端,统计的是每秒读取源表的数据量
RPS(Record Per Second):如果是Source端,统计的是每秒读取源表的数据行数
TPS(Transactions Per Second):如果是Source端,统计的是每秒读取源表的Block数
noteTPS和RPS区别:
例如在读取Kafka日志数据时,1秒读取5个LogGroup,那么TPS=5;如果每个LogGroup解析出来8个日志记录,那么一共解析出40个日志记录,RPS=40
数据迟到丢弃
丢弃晚于Watermark时间到达Window的数据的数量。
数据延迟(FlinkSQL/Flink任务)
统计该任务涉及的kafka topic中堆积未被消费的数据量(条数),同时也支持查看topic中每个分区的堆积数量。
自定义Metric
基于实际运维需求,支持添加查看更多监控指标。主要分为如下几类:
实时采集任务指标:
输入rps:flink_taskmanager_job_task_operator_flinkx_numReadPerSecond 输出rps:flink_taskmanager_job_task_operator_flinkx_numWritePerSecond 输入bps:flink_taskmanager_job_task_operator_flinkx_byteReadPerSecond 输出bps:flink_taskmanager_job_task_operator_flinkx_byteWritePerSecond 累计输入记录数:flink_taskmanager_job_task_operator_flinkx_numRead 累计输出记录数:flink_taskmanager_job_task_operator_flinkx_numWrite 累计输入数据量:flink_taskmanager_job_task_operator_flinkx_byteRead 累计输出数据量:flink_taskmanager_job_task_operator_flinkx_byteWrite
FlinkSQL/Flink任务指标
业务延迟:flink_taskmanager_job_task_operator_dtEventDelay 各source tps数据输入:flink_taskmanager_job_task_operator_dtNumRecordsInRate 各source rps数据输入:flink_taskmanager_job_task_operator_dtNumRecordsInResolveRate 各source bps数据输入:flink_taskmanager_job_task_operator_dtNumBytesInRate 各source的脏数据:flink_taskmanager_job_task_operator_dtDirtyData 各sink rps输出:flink_taskmanager_job_task_operator_dtNumRecordsOutRate 各Sink的脏数据输出:flink_taskmanager_job_task_operator_dtNumBytesInRate 数据延迟:flink_taskmanager_job_task_operator_topic_partition_dtTopicPartitionLag
CPU指标
jobmanager cpu负载: flink_jobmanager_Status_JVM_CPU_Load jobmanager cpu使用时间: flink_jobmanager_Status_JVM_CPU_Time taskmanager cpu负载: flink_taskmanager_Status_JVM_CPU_Load taskmanager cpu使用时间: flink_taskmanager_Status_JVM_CPU_Time
Memory指标
jobmanager jvm最大堆内存: flink_jobmanager_Status_JVM_Memory_Heap_Max taskmanager jvm最大堆内存: flink_taskmanager_Status_JVM_Memory_Heap_Max jobmanager jvm堆内存使用量: flink_jobmanager_Status_JVM_Memory_Heap_Used taskmanager jvm堆内存使用量: flink_taskmanager_Status_JVM_Memory_Heap_Used jobmanager jvm最大非堆内存: flink_jobmanager_Status_JVM_Memory_NonHeap_Max taskmanager jvm最大非堆内存: flink_taskmanager_Status_JVM_Memory_NonHeap_Max jobmanager jvm非堆内存使用量: flink_jobmanager_Status_JVM_Memory_NonHeap_Used taskmanager jvm非堆内存使用量: flink_taskmanager_Status_JVM_Memory_NonHeap_Used jobmanager直接缓冲区总容量: flink_jobmanager_Status_JVM_Memory_Direct_TotalCapacity taskmanager直接缓冲区总容量: flink_taskmanager_Status_JVM_Memory_Direct_TotalCapacity jobmanager直接缓冲区内存使用量: flink_jobmanager_Status_JVM_Memory_Direct_MemoryUsed taskmanager直接缓冲区内存使用量: flink_taskmanager_Status_JVM_Memory_Direct_MemoryUsed
Threads指标
jobmanager 线程数: flink_jobmanager_Status_JVM_Threads_Count taskmanager 线程数: flink_taskmanager_Status_JVM_Threads_Count
Network.Task指标
排队进入输入缓存区的数量:flink_taskmanager_job_task_buffers_inputQueueLength 排队进入输出缓存区的数量:flink_taskmanager_job_task_buffers_outputQueueLength
Availability.Job指标
任务重启次数: flink_jobmanager_job_numRestarts
任务重启花费时间: flink_jobmanager_job_restartingTime
Checkpoint指标
任务最后一次checkpoint花费时间: flink_jobmanager_job_lastCheckpointDuration 任务最后一次checkpoint大小: flink_jobmanager_job_lastCheckpointSize 任务最后一次checkpoint 路径: fflink_jobmanager_job_lastCheckpointExternalPath 任务checkpoint总数量: flink_jobmanager_job_totalNumberOfCheckpoints 任务checkpoint失败数量: 任务flink_jobmanager_job_numberOfFailedCheckpoints barrier 对齐花费时间: flink_taskmanager_job_task_checkpointAlignmentTime