通过分析函数 org.apache.flink.runtime.metrics.MetricRegistryConfiguration.fromConfiguration
可以得知我们的配置文件应该怎么写!
metrics.reporters: slf4j
metrics.reporter.slf4j.class: org.apache.flink.metrics.slf4j.Slf4jReporter
metrics.reporter.slf4j.interval: 6 SECONDS
配置文件同步更新!然后去TM上调试
stop in org.apache.flink.runtime.metrics.MetricRegistryConfiguration.fromConfiguration
在这个函数里进行配置解析
在MetricRegistryImpl这个类的构造方法里会针对这个配置内容进行解析,会产生这样一个对象
如果是实现了Scheduler的接口,则执行下面的
这里的executor是一个单线程的线程池
好,现在reporters已经准备好了,怎么用呢?每个metric生成的时候,都要调用下面的方法
所以,我们在下面这个地方打断点
stop in org.apache.flink.metrics.reporter.AbstractReporter.notifyOfAddedMetric
下面是几个例子
qa-bigdata-test-00.taskmanager. container_e33_1550284124589_1227_01_000002. Status.JVM.ClassLoader.ClassesLoaded | Gauge | |
qa-bigdata-test-00.taskmanager. container_e33_1550284124589_1227_01_000002. Status.JVM.ClassLoader.ClassesUnloaded | Gauge | |
qa-bigdata-test-00.taskmanager.container_e33_1550284124589_1227_01_000002.Status.JVM.GarbageCollector.ParNew.Count | ||
关于Gauge和Counter类型的比较简单,就是一个计数器,不解释
Meter不太一样,比如构造的时候,举个例子
可知,如果是复杂的View,则会启动5秒的任务来进行数据更新
有兴趣的可以看看 https://blog.youkuaiyun.com/qq_21653785/article/details/79625601