【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

本文主要是介绍【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一. Registering metrics:向flink注册新自己的metrics
      • 1. 注册metrics
      • 2. Metric types:指标类型
        • 2.1. Counter
        • 2.2. Gauge
        • 2.3. Histogram(ing)
        • 4. Meter
    • 二. Scope:指标作用域
      • 1. User Scope
      • 2. System Scope ing
      • 3. User Variables
    • 三. Reporter ing
    • 四. System metrics ing
    • 五. REST API integration
    • 六. Dashboard integration

本文我们通过官网来整体了解下flink 指标系统的系统性支持

 

本文主要关注:

  • 如何注册自定义指标,如何进行更新指标数据
  • 指标定义的层级:即指标的scope
  • 简单介绍,指标如何报告给外部系统、有哪些系统指标
  • 指标如何通过REST API获取
  • 在flink UI上创建Dashboard的方法

 

Flink exposes a metric system that allows gathering and exposing metrics to external systems.

flink 暴露了一个指标系统,可以收集和暴露指标给外部系统。

一. Registering metrics:向flink注册新自己的metrics

1. 注册metrics

任何继承了RichFunction 的用户函数,都可以通过调用:getRuntimeContext().getMetricGroup() ,来访问flink的metric system。方法返回的MetricGroup可以用来创建和注册新的指标。

 

2. Metric types:指标类型

flink支持 Counters, Gauges, Histograms and Meters.等四种指标类型。

2.1. Counter

计数器 (Counter) 用于计数某个指标。

  • 可以使用 inc()/inc(long n)dec()/dec(long n) 方法来增加或减少当前值。
  • 可以通过在 MetricGroup 上调用 counter(String name) 来创建并注册一个计数器。
public class MyMapper extends RichMapFunction<String, String> {private transient Counter counter;@Overridepublic void open(Configuration config) {this.counter = getRuntimeContext().getMetricGroup().counter("myCounter");}@Overridepublic String map(String value) throws Exception {this.counter.inc();return value;}
}

你也可以自己实现counter。

public class MyMapper extends RichMapFunction<String, String> {private transient Counter counter;@Overridepublic void open(Configuration config) {this.counter = getRuntimeContext().getMetricGroup().counter("myCustomCounter", new CustomCounter());}@Overridepublic String map(String value) throws Exception {this.counter.inc();return value;}
}

 

2.2. Gauge

可以提供任何数据类型,要使用Gauge你必须要实现Gauge接口,可以返回任何类型。

public class MyMapper extends RichMapFunction<String, String> {private transient int valueToExpose = 0;@Overridepublic void open(Configuration config) {getRuntimeContext().getMetricGroup().gauge("MyGauge", new Gauge<Integer>() {@Overridepublic Integer getValue() {return valueToExpose;}});}@Overridepublic String map(String value) throws Exception {valueToExpose++;return value;}
}

 

2.3. Histogram(ing)

直方图(Histogram)用于测量长整型值的分布情况。

可以通过在 MetricGroup 上调用 histogram(String name, Histogram histogram) 来注册一个直方图。

public class MyMapper extends RichMapFunction<Long, Long> {private transient Histogram histogram;@Overridepublic void open(Configuration config) {this.histogram = getRuntimeContext().getMetricGroup().histogram("myHistogram", new MyHistogram());}@Overridepublic Long map(Long value) throws Exception {this.histogram.update(value);return value;}
}

ing

 

4. Meter

一个 Meter 用于测量平均吞吐量。

  • 可以使用 markEvent() 方法注册一个事件的发生。同时发生多个事件可以使用 markEvent(long n) 方法注册。
  • 在 MetricGroup 上调用 meter(String name, Meter meter) 来注册一个 Meter。

 

二. Scope:指标作用域

每个度量指标都被分配了一个标识符和一组键值对,用于报告该度量指标。
这个标识符基于三个组件:在注册度量指标时的用户定义名称,一个可选的用户定义作用域,以及一个系统提供的作用域。

例如,如果 A.B 是系统作用域,C.D 是用户作用域,E 是名称,那么度量指标的标识符将是 A.B.C.D.E。

你可以通过在 Flink 配置文件中设置 metrics.scope.delimiter 键来配置标识符使用的分隔符(默认为 .)。

 

1. User Scope

你可以通过调用 MetricGroup#addGroup(String name),MetricGroup#addGroup(int name),或者 MetricGroup#addGroup(String key, String value) 来定义用户作用域。

我们通过 MetricGroup#getMetricIdentifier 和 MetricGroup#getScopeComponents 方法返回的内容。

counter = getRuntimeContext().getMetricGroup().addGroup("MyMetrics").counter("myCounter");counter = getRuntimeContext().getMetricGroup().addGroup("MyMetricsKey", "MyMetricsValue").counter("myCounter");

 

2. System Scope ing

 

3. User Variables

你可以通过调用 MetricGroup#addGroup(String key, String value) 来定义一个用户变量。

这个方法会影响 MetricGroup#getMetricIdentifier、MetricGroup#getScopeComponents 和 MetricGroup#getAllVariables() 返回的内容。

counter = getRuntimeContext().getMetricGroup().addGroup("MyMetricsKey", "MyMetricsValue").counter("myCounter");

 

三. Reporter ing

Flink 支持用户将 Flink 的各项运行时指标发送给外部系统。

 

四. System metrics ing

默认情况下,Flink会收集多个度量指标,这些指标能够深入了解当前的状态。

 

五. REST API integration

度量指标可以通过监控REST API查询。以下是可用端点列表及其示例JSON响应。

序号metric类型API
1特定实体的metric- /jobmanager/metrics
- /taskmanagers/<taskmanagerid>/metrics
- /jobs/<jobid>/metrics
- /jobs/<jobid>/vertices/<vertexid>/subtasks/<subtaskindex>
2实体的聚合metric- /taskmanagers/metrics
- /jobs/metrics
- /jobs/<jobid>/vertices/<vertexid>/subtasks/metrics
- /jobs/<jobid>/vertices/<vertexid>/jm-operator-metrics
3实体子集上聚合的metric- /taskmanagers/metrics?taskmanagers=A,B,C
- /jobs/metrics?jobs=D,E,F
- /jobs/<jobid>/vertices/<vertexid>/subtasks/metrics?subtask=1,2,3

 

六. Dashboard integration

可以在仪表板中可视化每个任务或操作符收集的度量指标。在作业的主页面上,选择“Metrics”选项卡。在顶部图表中选择一个任务后,您可以使用“添加度量指标”下拉菜单选择要显示的度量指标。如下图:

  • 任务度量指标列出为<子任务索引>.<度量名称>。
  • 操作符度量指标列出为 <子任务索引>.<操作符名称>.<度量名称>

在这里插入图片描述

  • 每个度量指标将显示为单独的图表,其中 x 轴代表时间,y 轴表示测量值。
  • 所有图表每隔10秒自动更新一次,在导航到其他页面时仍会继续更新。
  • 可视化的度量指标数量没有限制,但是只有数值型度量指标可以被可视化显示。

 

这篇关于【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088918

相关文章

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa