【Flink metric(1)】Flink指標系統的系統性知識:獲取metric以及注冊自己的metric

文章目錄

    • 一. Registering metrics:向flink注冊新自己的metrics
      • 1. 注冊metrics
      • 2. Metric types:指標類型
        • 2.1. Counter
        • 2.2. Gauge
        • 2.3. Histogram(ing)
        • 2.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

?

2.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秒自動更新一次,在導航到其他頁面時仍會繼續更新。
  • 可視化的度量指標數量沒有限制,但是只有數值型度量指標可以被可視化顯示。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36116.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面試題-Java垃圾回收之垃圾收集器

1.基礎知識 (1)知識點補充 Stop -the -World:發生時&#xff0c;除了GC所用的線程之外&#xff0c;所有的線程都處于等待狀態 Safepoint: 可達性分析算法時&#xff0c;必須保證在某個快照點進行。 分析的過程中對象的引用關系不會發生變化&#xff01; JVM的運行模式&#x…

數據結構-分析期末選擇題考點(排序)

何似清歌倚桃李 一爐沈水醉紅燈 契子 ? 上一期給大家提供了大概會考的題型給老鐵們復習的大致思路 這一期還會是一樣&#xff0c;我將整理一下排序的題型以及解題方法給你們 由于時間還很多&#xff0c;我就慢慢總結吧&#xff0c;一天一章的樣子&#xff0c;明天總結串、后天…

MyBatis源碼分析--一級緩存、二級緩存原理

前言&#xff1a; 有點項目經驗的朋友都知道緩存的重要性是不言而喻的&#xff0c;不僅僅我們在開發項目業務功能的時候使用了各種緩存&#xff0c;框架在設計的時候也有框架層面的緩存&#xff0c;尤其在查詢多的場景下&#xff0c;緩存可以大大的減少數據庫訪問&#xff0c;…

微前端框架是為了解決項目應用在大型項目中帶來的復雜性和維護難題而提出的技術方案。

微前端框架是為了解決單頁應用&#xff08;SPA&#xff09;在大型項目中帶來的復雜性和維護難題而提出的技術方案。Qiankun.js、MicroApp 和 Wujie 是三種流行的微前端框架。以下是對這三種框架的優缺點分析&#xff1a; Qiankun.js 優點 成熟度高&#xff1a;Qiankun.js 基…

【知識學習】闡述Unity3D中FogLOD的概念及使用方法示例

在Unity3D中&#xff0c;Fog&#xff08;霧效&#xff09;和LOD&#xff08;Level of Detail&#xff0c;細節層次&#xff09;是兩種用于提高場景視覺效果和性能的技術。 Fog&#xff08;霧效&#xff09; 霧效是一種視覺效果&#xff0c;用于模擬大氣中的霧或煙&#xff0c…

YOLOv8數據集標注

1 簡介 數據集是必不可少的部分&#xff0c;數據集的優劣直接影響訓練效果。一般來說&#xff0c;一個完整的數據集應該包括訓練集、測試集和驗證集。通常&#xff0c;數據集會被劃分為訓練集和測試集&#xff0c;比如將數據集的70%用作訓練集&#xff0c;30%用作測試集。在進行…

信號處理——時頻分析

經典傅里葉變換的限制&#xff1a; 1、只能反映信號的整體特性&#xff1b;&#xff08;完全是時域或頻域&#xff09; 2、要求信號滿足平穩條件&#xff1b; 3、必須獲得時域中的全部信息。 所以引入時頻分析&#xff0c;同時使用時間和頻率的聯合函數來表示信號。 1 時頻…

提高數據融合效率和數據成果質量工作流的可行性分析

第一章 引言 本文基于對框架數據、地名地址數據以及變更調查數據為主體數據源的分析&#xff0c;結合數據融合中分層數據處理原則和內容&#xff0c;從數據管理者、數據應用的角度提出數據質量的定位、需求定位&#xff0c;歸納數據融合過程中存在的困難&#xff0c;提出了數據…

嵌入式linux面試題大全及參考答案(3萬字長文)

目錄 解釋Linux內核的主要職責 什么是inode?它在文件系統中扮演什么角色? 常用的5個Linux文件權限標志 查看當前系統運行級別 查找包含特定字符串的文件 使用grep命令過濾特定模式的行 編寫腳本檢查指定目錄下文件大小并排序輸出 解釋變量、環境變量和位置參數在Shel…

前端npm打包自動壓縮

需要插件rollup-plugin-compression 在vite.config中使用 import compresssionBuild from rollup-plugin-compression import type { ICompressionOptions } from rollup-plugin-compression import dayjs from dayjs import packageInfo from ./package.json const option: I…

FANUC噴涂機器人P-350iA電機過熱維修解決方案

發那科噴涂機器人作為自動化噴涂生產線的重要組成部分&#xff0c;其性能穩定性和可靠性對于生產效率和產品質量具有重要影響。然而&#xff0c;在實際使用過程中&#xff0c;FANUC噴涂機器人P-350iA電機過熱故障問題往往成為影響其正常運行的主要因素之一。 FANUC機器人M-100…

產品經理進階:供應鏈管理制度

目錄 一、 目的 二、范圍 三、意義 五、周期 一、 目的 根據公司戰略規劃和經營目標,建立和完善生產計劃、物料控制體系、庫存 管理體系。通過匹配需求和產能,確保在滿足市場需求的同時降低整體庫存 水平,提高存貨周轉率,以達成公司的成本管理目標。 二、范圍 涉及供應…

vue2的雙向綁定

vue是一個mvvm框架&#xff0c;即數據雙向綁定&#xff0c;即當數據發生變化的時候&#xff0c;視圖也就發生變化&#xff0c;當視圖發生變化的時候&#xff0c;數據也會跟著同步變化。 Vue.js 2 中的雙向綁定是通過 v-model 指令實現的。v-model 指令可以在表單輸入元素上創建…

一款開源免費的現代化風格的Avalonia控件庫

前言 Citrus.Avalonia是一款開源&#xff08;MIT License&#xff09;、免費的現代化風格的Avalonia控件庫。 Avalonia介紹 Avalonia是一個強大的框架&#xff0c;使開發人員能夠使用.NET創建跨平臺應用程序。它使用自己的渲染引擎繪制UI控件&#xff0c;確保在Windows、mac…

推薦系統數據集——Amazon-Book

在推薦系統中&#xff0c;像Amazon-Book這樣的數據集通常包含用戶和物品的交互信息。為了訓練模型&#xff0c;這些數據需要轉換成適合模型輸入的格式。在這種情況下&#xff0c;item_list和user_list需要轉換成train.txt文件&#xff0c;通常包含用戶ID和物品ID的交互記錄。 …

你的生日是星期幾?HTML+JavaScript幫你列出來

0 源起 上周末&#xff0c;大寶發現今年自己的生日不是周末&#xff0c;這樣就不好約同學和好友一起開生日Party了&#xff0c;很是郁悶。一直嘀咕自己哪年的生日才是周末。 于是我用JavaScript寫了一個小程序來幫她測算了未來100年中每年的生日分別是星期幾。 1 設計交互界面…

torch創建2d卷積層報錯

import torch import torch.nn as nn print(nn.Conv2d(3, 16, 3, padding1)) 編譯器:pycharm2023.03.05 python&#xff1a;3.11 運行上述代碼 頁面報錯&#xff1a;OSError: [WinError 126] 找不到指定的模塊。 Error loading "D:\apploadpath\pythonPath\Lib\site-…

logback自定義規則脫敏

自定義規則conversionRule public class LogabckMessageConverter extends MessageConverter {Overridepublic String convert(ILoggingEvent event) {String msg event.getMessage();if ("INFO".equals(event.getLevel().toString())) {msg .....脫敏實現}return …

搭建大型分布式服務(四十一)SpringBoot 整合多個kafka數據源-支持億級消息生產者

系列文章目錄 文章目錄 系列文章目錄前言一、本文要點二、開發環境三、原項目四、修改項目五、測試一下五、小結 前言 本插件穩定運行上百個kafka項目&#xff0c;每天處理上億級的數據的精簡小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

【ARM】MCU和SOC的區別

【更多軟件使用問題請點擊億道電子官方網站】 1、 文檔目標 了解SOC芯片和MCU芯片的區別 2、 問題場景 用于了解SOC芯片和MCU芯片的區別&#xff0c;內部結構上的區別。 3、軟硬件環境 1&#xff09;、軟件版本&#xff1a;無 2&#xff09;、電腦環境&#xff1a;無 3&am…