Metrics 和监控(一)| 学习笔记

简介: 快速学习 Metrics 和监控。

开发者学堂课程【Apache Flink 入门到实战 - Flink 开源社区出品 Metrics 和监控(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/632/detail/10046


Metrics 和监控(一)

 

内容介绍:

一、什么是 Metrics

二、Metrics 的类型

三、Metric Group

四、怎么用 Metrics

五、如何获取 Metrics

六、实战:利用 Metrics 监控(几个哲学问题)

七、实战

 

一、什么是 Metrics

相当于指标等一类的意思;fink 提供的 Metrics,可以在 fink 内部收集这样的指标,然后暴露出指标,去更好的理解作业的状态、集群的状态。

这样更好的理解内部的状态。(不能实时检测作业的过程)Metrics 就相当于可以实时监控作业的工具。

 

二、Metrics 的类型

1、counter 计数器;

可以进行累加或者累减

2、Gauge 最简单的Metrics,反映一个值

看现在内存有多少可以每次实时暴露Gauge,Gauge目前的值就是kept使用的量。

3、meter 统计吞吐量,单位时间内发生“事件”的次数。

相当于求一种速率,事件处理它所用的时间得出的类似于斜率的东西。

4、histogram 统计数据分布、quantile(分位数),mean(频率值),stddev(标准方差),max,min(给一段时间,一段时间内做一个详细的统计)

 

三、Metric Group

1、Metric 在 Flink 内部有多层结构,并不是扁平化结构,是具有层级关系的,以 Group的方式组织

2、Metric Group + Metric Name 的唯一标识。下面是一个具体的例子(层级关系):

TaskManagerMetricGroup

TaskManagerJobMetricGroup

TaskMetricGroup

TasklOMetricGroup

OperatorMetricGroup

$User-defined Group}/ $fUser-defined Metrics}(自己加的 Metric,可以有自己的分层)

OperatorlOMetricGroup

JobManagerMetricGroup(层级少)

JobManagerJobMetricGroup

 

四、怎么用 Metrics

第一步 what,第二步 how

1、系统内置的 Metrics

(1)CPU

(2)memory(heap 的使用情况、nonheap 的使用情况、direct 使用情况)

(3)threads

(4)garbage collection

(5)class loader(不常用)

(6)network(广泛)解决性能问题 network 很好用。不只是网络传输。可以简单想象为Flink结构,一个有向无环图,可以看到上下游是一种生产者消费者模型。定位性能后面会讲到。

(7)cluster(集群)

(8)availability

(9)checkpointing(可以体现潜在的问题)

(10)rockDB(作业规模数据量足够大,需要额外关注,随着数据量的增大,性能会下降。但不会明显下降)

(11)IO

(12)connnectors

(13)kinesis connector

2、User-defined Metrics

除了系统的 Metrics 之外,Flink 支持自定义 Metrics

继承 RichFunction(才可以有接口)

Register user-defined Metric Group:(自定义层级)

getRuntimeContext().getMetricGroup().addGroup(...) 入口

Register user-defined Metric:getRuntimeContext).getMetricGroup@).counter/gauge/meter/histogram(...)

例: 

Counter processedCount= getRuntimeContext().getMetricGroup().counter("processed_count"):

processedCount.inc();

Meter processRate = getRuntimeContext().getMetricGroup().meter("rate", new MeterView(60));

processRate.markEvent(); (meter 多长时间内发生的记录,要有一个时间的窗口,单位为秒;加一个事件不需要每次 counter)getRuntimeContext().getMetricGroup().gauge("current_timestamp",System::currentTimeMillis);

Histogram histogram = getRuntimeContext().getMetricGroup().histogram("histogram", new

DescriptiveStatisticsHistogram(1000));

histogram.update(1024);(继承关系,)

https://ci.apache.org/projects/flink/flink-docs-release-1.8/monitoring/metrics.html#metric-types

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
IDE 数据可视化 Java
5款经典代码阅读器的使用方案对比
代码阅读是技术人的必备技能之一,高效地梳理代码能够极大程度上提高开发人员的工作效率,进一步为业务创造新价值。
13433 0
5款经典代码阅读器的使用方案对比
|
前端开发 网络协议 Dubbo
超详细Netty入门,看这篇就够了!
本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。
93585 33
超详细Netty入门,看这篇就够了!
|
SQL 数据采集 分布式计算
DataWorks 基本操作演示|学习笔记
快速学习 DataWorks 基本操作演示
5719 0
DataWorks 基本操作演示|学习笔记
|
11月前
|
存储 SQL 数据挖掘
深入理解 Flink 中的 State
Flink 的 State(状态)是其四大核心之一,为流处理和批处理任务提供强大支持。本文深入探讨 Flink 中的状态管理,涵盖 State 在 HDFS 中的存储格式、存在形式(如 ValueState、ListState 等)、使用方法、过期时间 TTL 和清除策略,并介绍 Table API 和 SQL 模块中的状态管理。通过实际案例,帮助读者理解如何在电商订单处理、实时日志统计等场景中有效利用状态管理功能。
1108 16
|
Java UED Spring
Springboot通过SSE实现实时消息返回
通过Spring Boot实现SSE,可以简单高效地将实时消息推送给客户端。虽然SSE有其限制,但对于许多实时消息推送场景而言,它提供了一种简洁而强大的解决方案。在实际开发中,根据具体需求选择合适的技术,可以提高系统的性能和用户体验。希望本文能帮助你深入理解Spring Boot中SSE的实现和应用。
6001 1
|
消息中间件 网络协议 NoSQL
1000W长连接,如何建立和维护?千万用户IM 架构设计
最近有小伙伴在面试 美团,又遇到了 IM 架构问题。小伙伴支支吾吾的说了几句,面试挂了。 所以,尼恩给大家做一下系统化、体系化的梳理,使得大家内力猛增,可以充分展示一下大家雄厚的 “技术肌肉”,**让面试官爱到 “不能自已、口水直流”**,然后实现”offer直提”
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
1447 3
|
监控 Java Shell
深入了解Spring Cloud Data Flow:流数据管道的管理和编排
在现代软件开发中,数据流处理变得越来越重要。随着数据量的不断增长,处理实时数据流以及批处理数据变得愈发复杂。为了更好地管理和编排数据流,Spring社区提供了一个强大的工具,即Spring Cloud Data Flow(SCDF)。本文将深入介绍Spring Cloud Data Flow的核心概念、架构和使用方式,以帮助您更好地理解和利用这个强大的数据流处理框架。
|
Prometheus 监控 Cloud Native
Spring Boot中使用Micrometer进行指标监控
Spring Boot中使用Micrometer进行指标监控