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

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

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

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


Metrics 和监控(二)

五、如何获取 Metrics

1、Web UI

2、RESTful API(对程序比较友好,写自动化脚本,运维;通过 RESTful API 解析格式,这样对程序友好 )

详见:htps://dapache.orz/orojedsftimnk fink doc-release 18/montorne/ret aplhtonl

image.png

以上是逻辑:

(1)Web UI和RESTful API

通过中心化的一个节点,定期去拉从各个组件实现。细节:拉,不一定实时更新。一个定期更新的逻辑。

小问题:不同步。因为某种情况没拉过来是不会更新的。因此会延迟。试着等一下就会更新。 

(2)红色的线有一个中心化的节点去聚合。

(3)蓝色的线是每一个单独的点。去直接汇报。如果要聚合需要在第三方。优点:内存大。用原始数据做处理。 

3、Metric Reporter(功能强大)

Flink 内置了很多 Reporter,对外部系统的技术选型可以参考,详见:

https://ci.apache.org/projects/flink/flink-docs-release-

1.8/monitoring/metrics.htm|#reporter

Metric Reporter Configuration Example

metrics.reporters: your monitorimx

metrics.reporter.jmx.class(必须):org.apache.flink.metrics.jmx.JMXReporter

metrics.reporter.jmx.port:1025-10000

metrics.reporter.your_monitor.class(必须): com.your company.YourMonitorClass

metrics.reporter(自定义).your monitor.interval: 10 SECONDS

metrics.reporter.your_monitor.config.a: your_a_value

metrics.reporter.your_monitor.config(自定义).b: your_b_value

(常见的系统:Graphite 、InfluxDB、Prometheus、SIf4j 调试好用)

 

六、实战:利用 Metrics 监控

1、自动化运维

(1) 收集 Metrics 作为决策依据

利用 Metric Reporter 收集 Metrics 到

存储/分析系统(例如 TSDB)

或者直接通过 RESTful API

(2)定制监控规则

关注关键指标,Failover,

Checkpoint, 业务 Delay(可能没有,需自己添加)

3)通知工具

自动报警:

钉钉报警,邮件报警,短信报警,电话报警

(4)大盘、报表、指标

通过大盘时刻了解作业总体信息

通过报表分析优化

下图所示大盘:可以关注业务延迟,队列的状况等

image.png

2、性能分析

(1)发现问题

异常指标

(2)剖析问题

缩小范围,验证假设,找

到瓶颈页

(3)分析原因

业务逻辑,JVM,操作系统,

State, 数据分布,高级功能

(4)借助 profiling工具

 

七、实战

“我的任务慢,怎么办”

1、为什么提问没人回答?

(一般没有老师会回答,闻着伤心,听者流泪,提问黑洞,话题终结者)

系统框架问题,需要进行很多轮的剖析。对于系统运作不熟悉,可以求助 Metrics

image.png

例如:发现一个 failover 的问题,都应该是0,但是有一个突起

image.png

延迟,自己统计的数据和当前数据不一致。也有问题。

image.png

TPS 的突降也是有问题的

常用的解决方法:

(1)缩小范围,定位瓶颈

例如:后面都是空的,但是前面满了。那么说明是一号节点的问题,这是就可以主要检查一号节点。100%是指最大值

image.png

发现324就是最高的,这时就可以缩小范围。

image.png

(2)多维度分析

① 业务维度(多)

并发度是否合理

数据波峰波谷(是不是平均的,波峰波谷)

数据倾斜(统计出来发现有些很满,有些没有,较难解决,是否打散数据)

② Garbage Collection(常见,内存没有配够,越来越慢,看GC)

GC log

③ Checkpoint Alignment(对齐,发现前三者没有问题,可以将其对齐)

④ State Backend 性能(如果数据量很大的需要小心)

Rockdb(随着数据量的增大,性能会下降,但又不会断崖似的下跌,下降的很慢。可能积攒了几天数据之后才会延迟,比较难查。)

⑤ 系统性能

CPU

内存,Swap

Disk IO, 吞吐量,容量

Network IO, 带宽

(越往下,概率越小。先缩小范围,利用 metrics) 

2、为什么

黑盒,缺少信息,无法了解系统状态

3、怎么办

求助 metrics

回答问题:

1、report 是专门的现成吗?

是的,每个 report 都是自己单独的。

2、Flink 内部的现成

有很多。

相关实践学习
基于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日以线上峰会的形式与大家见面。
相关文章
|
JSON 测试技术 数据格式
5 JMeter断言-Jmeter响应中出现乱码时
5 JMeter断言-Jmeter响应中出现乱码时
278 0
|
10月前
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
运维 NoSQL 测试技术
从一个事故中理解Redis(几乎)所有知识点
作者从一个事故中总结了Redis(几乎)所有的知识点,供大家学习。
424 12
|
Kubernetes Cloud Native 安全
基于阿里云服务网格流量泳道的全链路流量管理(一)严格模式流量泳道
灰度发布是一种常见的对新版本应用服务的发布手段,其特点在于能够将流量在服务的稳定版本和灰度版本之间时刻切换,以帮助我们用更加可靠的方式实现服务的升级。
30270 97
|
消息中间件 测试技术 开发工具
消息队列 MQ操作报错合集之收到"WARN RocketmqClient - consumeMessage Orderly return"警告,是什么原因
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
339 0
|
Kubernetes Cloud Native 测试技术
使用ASM流量泳道的全链路灰度发布实践
服务网格ASM实现全链路灰度发布:通过流量泳道隔离不同版本环境,配置虚拟服务实现灰度比例控制。从创建泳道、打标签、部署新版本到灰度切流、最终上线及下线旧版。
|
消息中间件 负载均衡 算法
RocketMQ源码(三)简单探索Producer和Consumer与Queue之间的负载均衡策略
- Producer如何将消息负载均衡发送给queue? - Consumer如何通过负载均衡并发消费queue的消息?
944 0
|
JSON Java 数据格式
JAVA对象jackson序列化json属性名首字母变成小写的解决方案
java代码对象如下: package com.ctrip.market.messagepush.
2880 0
|
SQL Java 测试技术
2021-jmeter接口性能测试教学及实战(一):jmeter介绍及安装,为什么是jmeter而不是loadrunner?
2021-jmeter接口性能测试教学及实战(一):jmeter介绍及安装,为什么是jmeter而不是loadrunner?
480 0
2021-jmeter接口性能测试教学及实战(一):jmeter介绍及安装,为什么是jmeter而不是loadrunner?
|
Shell
Shell 字符串比较(是否为空、等于、不等于)
Shell 字符串比较(是否为空、等于、不等于)
1114 0