一、Flink 监控配置
1、在 flink-conf.yaml
中配置 Pushgateway 上报
metrics:
reporter:
promgateway:
factory:
class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporterFactory
hostUrl: http://hadoop31:9091
jobName: flink-application
randomJobNameSuffix: true
deleteOnShutdown: false
interval: 30 SECONDS
2、添加依赖
flink-metrics-prometheus-1.20.0.jar
3、启动观察关键日志
LOG.info(
"Configured PrometheusPushGatewayReporter with {hostUrl:{}, jobName:{}, randomJobNameSuffix:{}, deleteOnShutdown:{}, groupingKey:{}}",
hostUrl,
jobName,
randomSuffix,
deleteOnShutdown,
groupingKey);
二、Flink 集成 metrics
https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/metrics/#metric-types
1、作业级指标(Job-Level Metrics)
numRestarts
: 作业从启动以来的重启次数,反映作业的稳定性。uptime
: 作业持续运行时间,用于评估作业的可靠性。downtime
: 作业停止运行的时间(如故障恢复期间)。checkpoint
相关指标*:lastCheckpointSize
: 最近一次检查点(Checkpoint)的大小。lastCheckpointDuration
: 最近一次检查点的完成耗时。checkpointFailuresPerMinute
: 每分钟检查点失败的次数,高值可能意味着资源不足或状态后端问题。
2、任务级指标(Task-Level Metrics)
numRecordsIn/Out
: 每个任务每秒处理的输入/输出记录数,反映吞吐量。latency
: 记录从进入任务到处理完成的延迟,通常分为分位数(如p50
,p95
,p99
),用于衡量实时性。backPressureTime
: 任务因下游处理能力不足而处于背压(Backpressure)状态的时间占比,高值需优化下游性能。bufferQueueLength
: 输入缓冲队列的长度,队列过长可能导致延迟增加。
3、操作符级指标(Operator-Level Metrics)
numRecordsIn/Out
: 每个操作符(如 Map、Filter)处理的记录数。currentInputWatermark
: 当前输入数据的水位线(Watermark),用于事件时间处理。processTime
: 操作符处理单条记录的平均耗时。stateSize
: 操作符状态(如窗口状态)的大小,过大可能影响检查点性能。
4、系统资源指标(Resource Metrics)
- CPU/Memory 使用率:
cpuUsage
: 任务管理器(TaskManager)的 CPU 使用率。heapUsed
: JVM 堆内存使用量,过高可能导致 GC 停顿。
- 网络指标:
outputQueueLength
: 网络输出队列长度,反映跨任务数据传输的负载。numBytesIn/OutPerSecond
: 每秒网络传输的字节数。
4、容错与检查点(Fault Tolerance)
checkpointAlignmentTime
: 检查点对齐时间(等待所有任务同步的时间),过长可能因数据倾斜导致。checkpointStartDelay
: 检查点启动延迟,高值可能因资源争用引起。
三、Grafana flink job 仪表盘
https://grafana.com/grafana/dashboards/14161-flink-job-metrics/