Flink既提供了预定义的指标又提供了自定义指标的框架
对于预定义指标,查看的最好方式是通过Flink Web UI
我们可以通过 http://<jobmanager-hostname>:8081来进行访问
主界面包含了TaskMananger的数量,配置和可用的任务处理槽以及正在运行和已完成的作业
还可以在WebUI中上传JAR包提交作业
对于每一个作业,都可以查看任务的持续时间,交换的字节数,并根据其进行聚合
点击Task Metrics选项卡,可以查看其中更加相信的信息,包含了有关任务细粒度的统计信息,缓冲区的使用,水位线,以及数据速率
那么除了提供的预定义指标以及一个WebUI方便查看,还可以自定义指标
预定义指标包含CPU利用率,内存使用情况,活动的线程数,垃圾回收统计,网络等
自定义指标则可以扩展更多,为了自定义指标
需要先注册一个MetricGroup对象,需要现在RuntimeContext中利用getMetrics方法调用,代码基本如下
常见的指标可以有,
Counter 用于自增来进行计数
Gauge 用于在某一时间点来计算某一类型的值,要使用Gauge,需要实现Guage接口并利用MetricGroup的gauge方法来其进行注册
使用代码基本如下
需要注意,在外部获取的时候,会将Gauge值转换为String,需要确保类型有对应的toString()实现
Histogram
可以使用直方图来表示数值类型数据的分布,最好的类型就是Long类型的指标,可以通过Histogram接口来收集数值
Meter
可以使用Meter指标来衡量事件发生的速率
Meter接口可以标记一个或者多个事件的发生的速率.
获取每秒事件发生的速率以及获取当前的meter标记的事件数目
Meter接口提供的方法可以标记一个或者多个事件的发生,获取每秒事件发生的速率以及当前meter标记的事件数目
那么在说完了如何注册,定义指标之后,如何在外部访问自定义的指标呢?
通常使用汇报器将指标发布到外端
汇报器需要在flink-conf.yaml中配置,可以通过配置添加汇报器