简介
本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metric,future。其中kubeclient上一个系列介绍过,本系列不再介绍。
本文介绍flink metrics组件,metrics透视系统内状况,是系统预警,查错,性能改进的利器
metrics组件
flink的metrics组件分布在两部分, flink metrics和flink runtime的metrics
flink metrics部分定义指标量,指标分组基类和报告器,带有多种报告器实现
flink runtime部分是MetricRegistry和指标分组业务实现
分组指标
分组指标使用group组件构建metrics层次,构造如x.y.a,x.y.z.b的监控指标,其中xyz是分组名称,a,b是最终的指标量,类型常用有Counter,Gauge,Meter等,类似文件夹和文件的关系
构建指标
分组构建完成后,可以在group构建具体指标,构建指标api在MetricsGroup接口
Counter counter(String name)
<T, G extends Gauge<T>> G gauge(int name, G gauge)
调用构建指标方法在该group构建指标
报告指标
指标构建后可以使用报告器输出指标,按接收方角度报告器分两类,拉和推
拉 接收方主动的拉去,报告器本身作为服务器
推 报告器主动推送到接收服务,通常是定时
上图几个典型的报告器实现,其中
PrometheusPushGatewayReporter 定时推送实现,定时推送到promethus的push gateway
PrometheusReporter 拉实现,内嵌HTTPServer,promethus server拉取
Slf4jReporter 可以认为是定时推实现,定时推送到本地日志文件
示例
下图作业管理器分组和作业管理器的作业metric分组
两者以parent属性形成一对多层次关系
下图JobManagerMetricGroup增加gauge指标,指示正在运行作业数
下图是JobManagerJobMetricGroup在SchedulerBase类注册metrics,比较典型的例子,不同的领域注册不同的metrics
构建指标最终调用MetricReporter的notifyOfAddedMetric,注册到报告器,报告器持有指标,定时的输出