关于如何在 Grafana 绘制 Apache Hudi Metrics 仪表盘的教程

news2024/12/28 21:29:50

文章目录

    • 前言
    • 下载 Prometheus
    • 下载 Pushgateway
    • Prometheus 集成 Pushgateway
      • Pushgateway 后台执行
      • Prometheus 后台执行
      • 在Prometheus中配置Pushgateway
    • Apache Hudi Metrics中开启 Pushgateway 推送
    • Grafana 安装和启动
    • Grafana 新增 Apache Hudi Metrics 仪表盘
      • 添加 Prometheus 数据源
      • 绘制仪表盘
    • 小结

前言

Apache Hudi 对许多监控组件都支持 metrics 推送,如 JMXDatadogPrometheus 等等。具体可以进入 https://hudi.apache.org/docs/metrics/ 查看。本文主要叙述下如何将 Apache Hudi Metrics 接入 Prometheus,开发人员通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化,使我们的数据湖任务运行更加健康。

下载 Prometheus

进入 Prometheus (https://prometheus.io/download/) 官网,选择与您的操作系统和 CPU体系结构(amd64arm64等)匹配的最新版本

wget https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz

然后解压下载的压缩包 prometheus-2.42.0.linux-amd64.tar.gz

tar -zxvf prometheus-2.42.0.linux-amd64.tar.gz

进入解压后的目录 prometheus-2.42.0.linux-amd64 执行以下命令

./prometheus

启动 prometheus 进程

[hadoop@127.0.0.1 prometheus-2.42.0.linux-amd64]$ ./prometheus
ts=2023-02-15T05:57:57.995Z caller=main.go:512 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2023-02-15T05:57:57.996Z caller=main.go:556 level=info msg="Starting Prometheus Server" mode=server version="(version=2.42.0, branch=HEAD, revision=225c61122d88b01d1f0eaaee0e05b6f3e0567ac0)"
ts=2023-02-15T05:57:57.996Z caller=main.go:561 level=info build_context="(go=go1.19.5, platform=linux/amd64, user=root@c67d48967507, date=20230201-07:53:32)"
ts=2023-02-15T05:57:57.996Z caller=main.go:562 level=info host_details="(Linux 3.10.0-957.10.1.el7.x86_64 #1 SMP Mon Mar 18 15:06:45 UTC 2019 x86_64 127.0.0.1 (none))"
ts=2023-02-15T05:57:57.996Z caller=main.go:563 level=info fd_limits="(soft=65535, hard=65535)"
ts=2023-02-15T05:57:57.996Z caller=main.go:564 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2023-02-15T05:57:58.000Z caller=web.go:561 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2023-02-15T05:57:58.000Z caller=main.go:993 level=info msg="Starting TSDB ..."
ts=2023-02-15T05:57:58.002Z caller=tls_config.go:232 level=info component=web msg="Listening on" address=[::]:9090
ts=2023-02-15T05:57:58.003Z caller=tls_config.go:235 level=info component=web msg="TLS is disabled." http2=false address=[::]:9090
ts=2023-02-15T05:57:58.163Z caller=head.go:564 level=info component=tsdb msg="Replaying on-disk memory mappable chunks if any"
ts=2023-02-15T05:57:58.165Z caller=head.go:608 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=1.956246ms
ts=2023-02-15T05:57:58.165Z caller=head.go:614 level=info component=tsdb msg="Replaying WAL, this may take a while"
ts=2023-02-15T05:57:58.177Z caller=head.go:685 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=3
ts=2023-02-15T05:57:58.192Z caller=head.go:685 level=info component=tsdb msg="WAL segment loaded" segment=1 maxSegment=3
ts=2023-02-15T05:57:58.197Z caller=head.go:685 level=info component=tsdb msg="WAL segment loaded" segment=2 maxSegment=3
ts=2023-02-15T05:57:58.201Z caller=head.go:685 level=info component=tsdb msg="WAL segment loaded" segment=3 maxSegment=3
ts=2023-02-15T05:57:58.201Z caller=head.go:722 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=7.854678ms wal_replay_duration=27.803458ms wbl_replay_duration=223ns total_replay_duration=37.641222ms
ts=2023-02-15T05:57:58.202Z caller=main.go:1014 level=info fs_type=XFS_SUPER_MAGIC
ts=2023-02-15T05:57:58.202Z caller=main.go:1017 level=info msg="TSDB started"
ts=2023-02-15T05:57:58.202Z caller=main.go:1197 level=info msg="Loading configuration file" filename=prometheus.yml
ts=2023-02-15T05:57:58.214Z caller=main.go:1234 level=info msg="Completed loading of configuration file" filename=prometheus.yml totalDuration=11.842044ms db_storage=2.642µs remote_storage=2.851µs web_handler=654ns query_engine=2.379µs scrape=2.826916ms scrape_sd=28.608µs notify=807.993µs notify_sd=23.783µs rules=3.072µs tracing=18.177µs
ts=2023-02-15T05:57:58.214Z caller=main.go:978 level=info msg="Server is ready to receive web requests."
ts=2023-02-15T05:57:58.214Z caller=manager.go:974 level=info component="rule manager" msg="Starting rule manager..."

如果出现如上图所示的日志,则表示启动成功。

下载 Pushgateway

进入 pushgatewayrelease 页面:(https://github.com/prometheus/pushgateway/releases),选择适合自己环境的版本下载。

wget https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz

然后解压下载的压缩包

tar -zxvf pushgateway-1.5.1.linux-amd64.tar.gz

进入解压后的目录 pushgateway-1.5.1.linux-amd64/

启动 pushgateway

[hadoop@127.0.0.1 pushgateway-1.5.1.linux-amd64]$ ./pushgateway
ts=2023-02-15T05:56:35.689Z caller=main.go:100 level=info msg="starting pushgateway" version="(version=1.5.1, branch=HEAD, revision=7afc96cfc5e2b278f3b20e56968ff30eea22b70e)"
ts=2023-02-15T05:56:35.689Z caller=main.go:101 level=info build_context="(go=go1.19.3, user=root@fc81889ee1a6, date=20221129-16:30:38)"
ts=2023-02-15T05:56:35.691Z caller=tls_config.go:232 level=info msg="Listening on" address=[::]:9091
ts=2023-02-15T05:56:35.691Z caller=tls_config.go:235 level=info msg="TLS is disabled." http2=false address=[::]:9091

出现如上日志,则表示正常启动。

Prometheus 集成 Pushgateway

pushgatewayprometheus 的上述执行方式会导致进程在前台执行, 一旦退出ssh会话就会终止。为了避免这种情况,我们可以创建一个脚本以后台方式运行。

Pushgateway 后台执行

首先,请进入 pushgateway 的安装目录,在目录下创建名为 start.shpushgateway 启动脚本。脚本内容如下:

CURRENT_DIR=$(cd `dirname $0`; pwd)
log="$CURRENT_DIR/run.log"
nohup  $CURRENT_DIR/pushgateway > $log 2>&1 &

然后执行 bash start.sh 即可启动 pushgateway 服务。

Prometheus 后台执行

首先,请进入prometheus的安装目录,在目录下创建名为start.shprometheus启动脚本。

脚本内容如下:

CURRENT_DIR=$(cd `dirname $0`; pwd)
log="$CURRENT_DIR/run.log"
data="$CURRENT_DIR/data"
nohup  $CURRENT_DIR/prometheus --storage.tsdb.path=$data --config.file=$CURRENT_DIR/prometheus.yml > $log 2>&1 &

在Prometheus中配置Pushgateway

您需要将 pushgateway 添加到 prometheus 配置文件中。您可以修改 prometheus.yml 配置文件内容为

global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
	# 增加pushgateway的监控指标
  - job_name: pushgateway
    static_configs:
      - targets: ['localhost:9091']
        labels:
          instance: pushgateway

然后执行 bash start.sh 即可启动 prometheus 服务。

Apache Hudi Metrics中开启 Pushgateway 推送

Apache Hudi 有个全局配置文件,路径在 /etc/hudi/conf/hudi-defaults.conf ,我们可以把一些全局配置放到这里。

配置如下:

hoodie.metrics.on=true
hoodie.metrics.reporter.type=PROMETHEUS_PUSHGATEWAY
#host修改为配置pushgateway所在机器的ip
hoodie.metrics.pushgateway.host=127.0.0.1
hoodie.metrics.pushgateway.port=9091
hoodie.metrics.pushgateway.delete.on.shutdown=false
hoodie.metrics.pushgateway.job.name=hudi-metrics
hoodie.metrics.pushgateway.random.job.name.suffix=false

完成以上配置后,执行 hudi 任务时,一旦有 hudi 指标产生,hudi 就会将指标推送至 pushgateay

Grafana 安装和启动

打开 Grafana 官网(https://grafana.com/grafana/download),选择与您的操作系统和 CPU 体系结构(amd64arm64等)匹配的 Grafana版本,并下载解压

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.6.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-9.3.6.linux-amd64.tar.gz

进入安装后的目录:grafana-9.3.6/bin

执行 ./grafana-server 即可启动 grafana 服务,此时可以在浏览器中打开 localhost:3000 进入grafanaweb页面,默认的用户名和密码分别为adminadmin。登陆成功后,我们可以配置数据源、创建仪表板和可视化面板。

Grafana 新增 Apache Hudi Metrics 仪表盘

添加 Prometheus 数据源

打开 Grafana,并使用管理员帐户登录。在左侧导航栏中单击⚙️配置按钮,选择 Data Source选项,进入到数据源配置页面。在数据源列表页面中,单击 Add data source 按钮,选择 Prometheus

在这里插入图片描述

settings 选项卡中,输入数据源的名称,然后在 URL 字段中输入 Prometheus 服务器的地址和端口号(例如:http://localhost:9090)。您可以使用默认值设置其它选项,然后单击 save & test 按钮测试数据源的连接。
在这里插入图片描述

出现以上提示,即表示Prometheus数据源添加完毕。

绘制仪表盘

Grafana 的左侧导航栏中,单击 + 号并选择 Dashboard 选项。在Dashboard 页面中,您可以选择要创建的仪表盘类型,如图表、单个统计数据或表格。选择仪表盘类型后,您可以开始设计您的仪表盘。

特别提醒一下,仪表盘的数据源要选择为我们刚刚新增的数据源 hudi-metrics.

如果你不知道 hudi 目前有哪些指标,可以打开 Metrics browser 查看所有的采集指标。
输入正确的 PromQL 后图表即展现出相应指标的监控。
在这里插入图片描述

小结

本篇主要简单介绍了如何下载、安装并启动 prometheuspushgatewaygrafana等组件。涉及到prometheuspushgateway 的集成,hudipushgateway 的集成以及 prometheusgrafana 的集成。方法都很简单,只要有耐心就能完成,更高级的玩法需要大家自己去学习。安装这些组件不是目的,主要是为了能够根据监控的指标来对做一些告警、分析和预判。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

批处理删除指定文件或文件夹

声明:1-2节参考了 https://blog.csdn.net/weixin_43960383/article/details/1243673841. DEL1.1 DEL 的命令参数使用 del 命令能指定文件,Del (erase)[Drive:][Path]FileName指删除指定文件。指定要删除的文件或文件集的位置和名称。语法格式如下&#x…

XML学习

文章目录XML什么是XML?XML的作用?XML语法文档声明XML注释元素(标签)xml属性语法规则5.4、xml解析技术介绍dom4j 解析技术(重点)dom4j 编程步骤:使用遍历标签 获取所有标签中的内容(重点&#x…

第十三届蓝桥杯国赛 C++ C 组 Java A 组 C 组 Python C 组 E 题——斐波那契数组(三语言代码AC)

目录1.斐波那契数组1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3.Ac_code1.Java2.C3.Python1.斐波那契数组 1.题目描述 如果数组 A(a0,a1,⋯.an−1)A(a_0,a_1,⋯.a_{n-1})A(a0​,a1​,⋯.an−1​)满足以下条件, 就说它是一个斐波那契…

如何在类中定义构造方法?

在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下:1、方法名与类名相同2、在方法名的前面没有返回值类型的声明3、在方法中不能使用return语句返回一个值接下来通过一个案例来演示如何在类中定义构造方法&#xff…

闪光桐人の实习日记(2023年2月20-27日)

前往闪闪の小窝以获得更好的阅读和评论体验 文章目录2023年2月20日(Vue入门)概念Vue基础Vue中的MVVMVue的体验Vue的生命周期Vue指令Vue组件VueRouter前后端路由的区别工作原理两种模式比较route跟router的区别路由属性导航守卫Vuex概述5种基本对象基本使…

C语言编程规范 第二部分

2、头文件对于C语言来说,头文件的设计体现了大部分的系统设计。不合理的头文件布局是编译时间过长的根因,不合理的头文件实际上反映了不合理的设计。 1、头文件中适合放置接口的声明,不适合放置实现头文件是模块(Module&#xff…

【数据结构】时间复杂度和空间复杂度

🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 小苏希望大家能从这篇文章中收获到许…

苹果手机怎么设置闹钟铃声?更改为歌曲铃声,亲测有效

很不是有很多小伙伴每天早上都被苹果手机刺耳的“雷达”闹钟铃声给吵醒呢?想要更换一个舒缓的闹钟铃声,却发现自己鼓捣半天却无法更换喜欢的歌曲闹钟铃声。苹果手机怎么设置闹钟铃声?下面小编就来分享如何将苹果手机的闹钟铃声设置成歌曲铃声…

【docker】拉取镜像环境报错解决#ERROR: Get https://registry-1.docker.io/v2/

🍁博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录问题报错原因解决方法问题 ERROR…

简单的认识 Vue(vue-cli安装、node安装、开发者工具)

Vue1、Vue 与其他框架的对比及特点1.1 Vue.js 是什么1.2 作者1.3 作用1.4 Vue 与其他框架的对比2、安装 Vue 的方法2.1 CDN 引入2.2 脚手架工具2.3 vue 开发者工具安装3、创建第一个实例4、理解 Vue 的 MVVM 模式5、数据双向绑定5.1 感受响应式实验总结1、Vue 与其他框架的对比…

Flutter WebView 如何与 h5 同步登录状态

大家好,我是 17。 Flutter WebView 一共三篇文章 在 Flutter 中使用 webview_flutter 4.0 | js 交互Flutter WebView 性能优化,让 h5 像原生页面一样优秀Flutter WebView 如何与 h5 同步登录状态 本篇是第 3 篇,讲下 Flutter WebView 与 h…

Python|每日一练|动态规划|图算法|散列表|数组|双指针|单选记录:不同路径|求两个给定正整数的最大公约数和最小公倍数|删除有序数组中的重复项

1、不同路径(数学,动态规划) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”…

【大数据基础】Linux常用命令

参考资料: https://www.runoob.com/w3cnote/linux-common-command-2.html 1、ls命令 就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。 ls -a 列…

LockSupport常用方法源码分析

前言:本文将介绍LockSupport类中的方法和部分源码,以及面试常问到的一个小问题,感兴趣的大佬可以指点下。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们😉😉。 如果文章有什么需要改进的地方还请大佬不吝赐教&am…

uniapp项目引入vant2遇到报错Uncaught ReferenceError: require is not defined完美解决方案

一、问题描述 我用的是Vue2版本的uniapp项目,以下是Vant官方提供的安装方法,使用npm安装到uniapp项目中。 Vant官网:https://vant-contrib.gitee.io/vant/v2/#/zh-CN/quickstart 安装完成得到以下模块 官方提供的引入单个组件的方案 我需要引…

Vision Transformer(ViT) 2: 应用及代码讲解

文章目录1. 代码讲解1.1 PatchEmbed类1)__init__ 函数2) forward 过程1.2 Attention类1)__init__ 函数2)forward 过程1.3 MLP类1)__init__ 函数2)forward函数1.4 Block类1)__init__ 函数2)forwa…

MATLAB曲线拟合工具箱

MATLAB曲线拟合工具箱一、MATLAB曲线拟合工具箱1.导出拟合后的曲线数据2.调用m文件中的函数3.显示5位有效数字二、参考链接一、MATLAB曲线拟合工具箱 1.导出拟合后的曲线数据 生成代码后,默认函数名为createFit,可以自行修改,直接保存&#…

Allegro如何重命名光绘操作指导

Allegro如何重命名光绘操作指导 在做PCB设计的时候,光绘设置是输出生产文件必要的流程,设置好光绘之后,如何对光绘重新命名,如下图 如何把L1改成TOP,L6改成BOTTOM,具体操作步骤如下 点击Manufacture选择Artwork

每天一道大厂SQL题【Day11】微众银行真题实战(一)

每天一道大厂SQL题【Day11】微众银行真题实战(一) 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…

【C++修炼之路】21.红黑树封装map和set

每一个不曾起舞的日子都是对生命的辜负 红黑树封装map和set前言一.改良红黑树的数据域结构1.1 改良后的结点1.2 改良后的类二. 封装的set和map2.1 set.h2.2 map.h三. 迭代器3.1 迭代器封装3.2 const迭代器四.完整代码实现4.1 RBTree.h4.2 set.h4.3 map.h4.4 Test.cpp前言 上一节…