基本的需求
- 监控 job 的内存、网络、CPU 的使用情况
- 监控 job 的状态,running or dead
- 监控 job exception
总之,我的目的是不能让 job 因内存、网络、cpu 不足造成的程序崩溃
了解什么是 Metric
看看下面这个 blog , 应该会有一个大概的了解:
http://wuchong.me/blog/2015/08/01/getting-started-with-metrics/
metric 的类型
- 单值
- counter:计数器,只能返回一个单个的 long 值
- gauges: 比 counter 更加灵活,可以将类里面的成员变量的组合起来返回给 report
- 复合值
- meter: 返回的是一个平均值,例如 tps 值。meter 提供给我们了一个 mark(long) 这样的一个函数,我们可以使用这个函数在接收或者发送数据的时候,调用 mark(record number) meter 就会自动计算出总体 tps、前 5 分钟 tps、前 15 分钟 tps
- Histograms: 将我们输入的数字集合的 最小值、最大值、中间值、中位数即算出了
scope 的概念
scope 是什么呢?简单的来说就 metric 所在的域。一共有两大类
- User Scope:这个 Flink 提供给用户的 API,用户可以使用这些API 定义自己的 metric。可以理解为类 metric 是在 operator 中自定义的 metric
- System Scope:这个是 Flink 系统层面提高的 metric,包括 JM、TM、JOB 的基本配置信息内存、CPU、网络的使用情况
metric REST api
Flink 的 REST API(https://flink-china.org/doc/blink/monitoring/rest_api.html)
提共了大量的接口,利用这些接口,我们可以得到在开头提到的需求。
整理了几个常用的接口:
遍历出所有的 job
http://JM_server_id:8081/jobs/overview
查看一个 job 的详情,可以显示任务的名称、状态、运行时长等
http://JM_server_id:8081/jobs/$job_id/
查询用户自定义的配置,包括自定义的参数、运行时的配置
http://JM_server_id:8081/jobs/$job_id/config
查看异常
http://JM_server_id:8081/jobs/$job_id/exceptions
查看 JM 的某几个指标
http://JM_server_id:8081/jobmanager/metrics?get=Status.JVM.Memory.Mapped.TotalCapacity,其他的指标ID
查看用户在 operator 中自定义的 metric
http://JM_server_id:8081/jobs/$job/vertices/$vertices/metrics?get=0.metric_map.MyGauge其中 $vertices,可以在 http://JM_server_id:8081/jobs/$job_id/ 的 vertices 标签获取到
End.爱数据网专栏作者:wang-possible作者介绍:6年零售大数据工作经验,技能持续精进
CSDN个人主页:bluedraam_pp
- 我的微信公众号
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论