Grafana 监控面板绘制流程

news2024/9/23 7:20:27

本篇作者:

IoTDB 社区 -- 张洪胤

本文以 IoTDB V1.0.1 版本为例

本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集,并且使用 Grafana 的方式进行可视化。

1

监控指标的 Prometheus 格式说明

对于 Metric Name 为 name, Tags 为 K1=V1, ..., Kn=Vn 的监控指标有如下映射,其中 value 为具体值

e012f55e1e06eea896ed8fc1f308ff51.png

2

Prometheus 函数说明

2.1

Aggregation operators

参考文档:

https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators

运算符:

- sum (calculate sum over dimensions)

- min (select minimum over dimensions)

- max (select maximum over dimensions)

- avg (calculate the average over dimensions)

- group (all values in the resulting vector are 1)

- stddev (calculate population standard deviation over dimensions)

- stdvar (calculate population standard variance  over dimensions)

- count (count number of elements in the vector)

- count_values (count number of elements with the same value)

- bottomk (smallest k elements by sample  value)

- topk (largest k elements by sample value)

- quantile(calculate φ-quantile (0 ≤ φ ≤ 1) over  dimensions)

上述所有运算符都可以在所有维度上聚合,也可以通过 without 或者 by 子句来决定聚合方式,对应语法规约为:

<aggr-op> [without|by (<label list>)] ([parameter,] <vector expression>)
or
<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]

2.2

Functions

参考文档:

https://prometheus.io/docs/prometheus/latest/querying/functions/

2.2.1 rate

1. rate(v range-vector): 计算范围向量中时间序列的每秒平均增长率。单调性中断(例如由于目标重启导致的计数器重置)会自动调整。此外,计算外推到时间范围的末端,允许缺失周期与范围的时间段不完全对齐。

2. 示例:以下示例表达式返回范围向量中每个时间序列在过去 5 分钟内测量的每秒 HTTP 请求速率:

rate(http_requests_total{job="api-server"}[5m])

3. 计算原理:rate 通过计算一个新的直方图来作用于原生直方图,其中每个分量(观测值的总和和计数,桶)是 v 中第一个和最后一个原生直方图中相应分量之间的增长率。

4. 适用场景:适用于警报和缓慢移动的计数器。

5. 注意:当将 rate() 与聚合运算符(例如 sum())或随时间聚合的函数(任何以 _over_time 结尾的函数结合使用时,始终首先采用 rate(),然后进行聚合。否则 rate() 无法在您的目标重新启动时检测到计数器重置。

2.2.2 irate

1. irate(v range-vector):计算范围向量中时间序列的每秒瞬时增长率(基于最后两个数据点)。单调性中断(例如由于目标重启导致的计数器重置)会自动调整。

2. 示例:以下示例表达式通过查找 5 分钟前两个最近的数据点得出 HTTP 请求的每秒速率:

irate(http_requests_total{job="api-server"}[5m])

3. 适用场景:易变的、快速移动的计数器。

4. 注意:当将 irate() 与聚合运算符(例如 sum())或随时间聚合的函数(任何以 _over_time 结尾的函数)结合使用时,始终首先采用 irate(),然后进行聚合。否则,irate() 无法在您的目标重新启动时检测到计数器重置。

3

Grafana 可视化绘制

官方文档参考:https://grafana.com/docs/

3.1

创建 Dashboard

如果已有 Dashboard 跳过本步骤即可

1. 点击左侧边栏 Dashboards -> browse 

   a. 已有 Dashboard:点击右侧 Import 按钮导入对应的 Dashboard 即可。

   b. 创建 Dashboard:点击右侧 New Dashboard 按钮。

2. 进入 Dashboard 后点击右上角设置按钮:

   a. 在 General 界面更新 Name,Description,Tag等基础信息,调整 Panel options 为 Shared crosshair,从而保证 tooltip 可以跨 panel 使用。

   b. 在 Variables 界面定义本 Dashboard 的变量:

        i. 添加 job 变量,类型为 Query,对应的Query Options 是 label_values(job)

        ii. 添加 instance 变量,类型为 Query,对应的 Query Options 是 label_values(up{job=~"$job"},instance)

1ca53178ce7533bfa0498d4cb6af072a.png

f81a3123de08bfc4f81559786f314703.png

3.2

创建 Panel

优秀绘制参考:

https://play.grafana.org/dashboards

1. 点击右上角:Add Panel,其中 Add a new panel 是添加一个面板,Add a new row 是添加一个行(分组,两个行之间的所有 panel 属于前一个row)。

7af058ff80f2893ef38b5884b22ecb57.png

2. 点击 Add a new Panel,添加一个面板。首先点击右上角,选择当前 Panel 的类型,比较常用的有Time series(时间序列)、Stat(统计)、Gauge(寄存器)等等,可以视情况选择。

0ded0f808281b27848e10a99178a48af.png

3. 以 Timeseries 为例,首先编写对应的 PromQL 执行数据查询。

   a. 在 PromQL 中,可以用 $instance 访问到刚刚在 Dashboard 的 Variables 中配置的 instance 变量,job 变量也是类似的。

   b. 在 Legend 中,可以通过双中括号访问到对应的监控项的对应 Tag 的具体值,比如在下图的例子中,state="blocked/new/runnable/terminated/timed-waiting/waiting",通过这样的方式修改图例。

   c. 可以通过点击 + Query 在当前面板添加更多时间序列。

7cf63d9236ff0941dc9b18e270c305a4.png

4. 在右侧的 Panel Options 中可以更新当前面板的标题、描述并设置面板背景是否透明。

8c8f783ca2d14cb78df8bae2896eb7b7.png

8d5096009208fd50ec203f7a941405da.png

5. 在右侧的 Tooltip 中可以选择不同的类型:

   a. Single:只显示距离鼠标最近的一条。

   b. All:显示鼠标所在时间线的所有条,可以不排 序、升序或降序。

   c. Hidden:不显示。

bd5e29303ed262be1ee9524affa211ee.png

14c5747f1fa939b87b7e5a7444cfa96a.png

a91e97f115a0cb1c2bccc1c258c4ba8e.png

6. 在右侧的 Legend 可以调整不同的图例:

   a. Mode:List(列表)、Table(表格)、Hidden(不显示)。

   b. Placement:Bottom(放在底部)、Right(放在右侧)。

   c. Legend Values:是否要同时显示对应的时间序列的值。

   d. 如下示例我们将图例放置在右侧,采用表格的形式,并且显示平均值。

bfab5190d3550fd66b52b99d95154241.png

3965a15f3a73ac3b1722b6855e029127.png

7. 在右侧的 Graph Styles 可以调整线的样式,包括 line、bar 和 point 三类:

   a. line:还可以调整插值、线宽、填充透明度、渐变模式、线形、空值连接方法、是否显示等属性。

   b. bar:还可以调整类型、线宽、填充透明度、渐变模式、是否显示点等属性。

   c. points:还可以调整点大小等属性。

   d. 如下示例我们使用线,设置填充透明度为5%,从不显示点。

150fdd1a094eefeeb6452e8e50faf199.png

3c45e2d448e31bf90613847d8405c5f9.png

8. 在右侧的 Axis 可以调整对应的轴信息,包括标签、宽度、纵轴最小值、纵轴最大值等等,一般不需要调整。

8ac9efcc14b1bd0cea6d9dcb1a590209.png

d0870023e3b1c018690075ae85cf5dce.png

9. 在右侧的 Standard options 可以设置单位(有byte, s, ms, us, ns等等,还可以自定义)、显示最小值、显示最大值、精度、展示名称、配色(可以选择单个颜色、根据阈值或者现有配色方案)等。如下示例为自定义单位为 个,最小值设置为 0,最大值设置为 300。

c0dcf57d7a1bf57b0b43e8c0b9b0c23a.png

8c5ab331a20073ba4f67d9f8c67813ed.png

efbb2327382e7374e2271e085bedf953.png

10. 在右侧的 Value mappings 可以添加对应的映射:可以根据值、范围、正则和特殊值(空等)来控制其展示的文本,比如0代表离线,1代表上线,可以通过 value mappings 完成。

b1e9ba7df5d3c650e3387f9205e8e3ae.png

f6c72f106f426a150eb10a49d0d14bb1.png

11. 在右侧的 Thresholds 则是设置阈值,可以结合 Standard options 中的配色方案使用:

   a. 阈值设置:可以设置绝对阈值、相对阈值(和显示最大值、显示最小值有关)。

   b. 阈值显示:可以选择不显示阈值、显示阈值线、显示阈值阴影和同时显示阈值线和阴影。

   c. 例如设置为 60% 和 80% 的阈值,并且显示阈值吸纳和阴影线。

e399792761edbf220ae522858a7d6862.png

12. 可以通过 Overrides 来重写部分时间序列的上述某些属性,支持通过名字、名字正则、类型和返回值重写:

   a. 重写的属性具有更高的优先级。

   b. 例如我可以重写 name 为 waiting 的时间序列的颜色为绿色,如下所示:

c8c61a1a24222f0d06edad7e4761f45b.png

cb3e7fad32e033116f863de605cd21c6.png

6c1e3a9fbb8a22121462a04d25c4d0de.png

13. 至此,已经完成了对于 Panel 创建的简单介绍,可以通过在 Dashboard 中拖拽 Panel 改变其位置,也可以通过拖拽 Panel 的右下角来改变 panel 的大小。

4

导出 Grafana

1. 点击左上角的导出按钮:

092d6c1695919b2ef5278c155c1f323d.png

2. 点击 Export 标签页,并选择 Export for sharing externally,然后点击 save to file 就将对应的 Dashboard 的 json 文件下载到本地了。

fe31526b0122fb8f12168139dd5b3375.png

3. 最后,将 Dashboard 的 json 上传到 GitHub (docs/UserGuide/Monitor-Alert文件夹下) 的对应位置即可。

作为全球性开源项目,截至目前,Apache IoTDB 已拥有 244 名贡献者、3.1K Stars、820 Forks、8653 Commits。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache IoTDB 项目的不断发展与前进,迈出加入 Apache IoTDB 社区的第一步!

a418645f7a5f4274ba2d076c04edd481.gif

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

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

相关文章

ABB机器人Offs坐标偏移功能的具体使用方法

ABB机器人Offs坐标偏移功能的具体使用方法 Offs功能说明: 在机器人的工件坐标系中添加一个偏移量 举例说明: 参数及数据类型: 在RobotStudio的仿真操作: 如下图所示,在程序中添加一个移动指令,并记录该点位为p10, 如下图所示,复制该指令语句, 如下图所示,选中…

Qt音视频开发22-音频播放QAudioOutput

一、前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频&#xff0c;其实从Qt4.6开始就有&#xff0c;在Qt6中变成了QAudioSink&#xff0c;功能一样。用QAudioOutput播放音频pcm数据极其方便&#xff0c;只需要指定音频播放设备&#xff08;可能电脑上有多个音频输出设备…

力扣sql简单篇练习(二十六)

力扣sql简单篇练习(二十六) 1 每家商店的产品价格 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 多行变成多列,考虑用sum if分组 SELECT product_id,sum(IF(storestore1,price,null)) store1,sum(IF(storestore2,price,null)) store2, sum(IF(st…

mmdetectionV2.x版本 训练自己的VOC数据集

mmdetection目录下创建data文件夹&#xff0c;路劲如图所示&#xff0c;不带yololabels 修改配置文件 mmdet/datasets/voc.py 配置图片格式 mmdet/datasets/xml_style.py 如果图片是jpg则改成jpg&#xff0c;是png格式就改成png&#xff0c;这里我不需要改&#xff0c;本…

C++11:包装器

文章目录1. 介绍2. function包装器2.1 介绍2.2 示例1用法2.3 示例22.4 function包装器的功能统一类型简化代码2.5 意义3. bind包装器3.1 介绍3.2 bind包装器的功能绑定固定参数3.3 意义1. 介绍 C 包装器是一种用于给其他编程接口提供更一致或更合适的接口的技术。它可以包装任…

人工智能书籍——《奇点临近》

当人们看到太多相同的时候&#xff0c;也许我们很无知&#xff1b; 当人们看到太多不同的时候&#xff0c;也许我们视野不够大&#xff1b; 当人们同时看到不同和相同的时候&#xff0c;也许这恰是我们的智慧原点。 物质是静止的能量&#xff0c;能量是运动的物质&#xff0c;生…

04 HiveHBase

Hive 一 Hive基本概念 1 Hive简介 学习目标 了解什么是Hive了解为什么使用Hive 1.1 什么是 Hive Hive 由 Facebook 实现并开源&#xff0c;是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据映射为一张数据库表&#xff0c;并提供 HQL(Hive SQL)查询功能&…

05 Spark_Core

01 spark 入门 课程目标&#xff1a; 了解spark概念知道spark的特点&#xff08;与hadoop对比&#xff09;独立实现spark local模式的启动 1.1 spark概述 1、什么是spark 基于内存的计算引擎&#xff0c;它的计算速度非常快。但是仅仅只涉及到数据的计算&#xff0c;并没有涉…

【5】基础语法篇 - VL5 位拆分与运算

VL5 位拆分与运算 1 自己犯的错误 &#xff08;1&#xff09;语法错误 在begin end块 后面加了" ; " case(sel)2b00: begin validout<0; out<0; end;2b01: begin validout<1; out<d0 d1; end;2b10: begin validout<1; out<d0 d2; end;2b11: be…

分享几个常用的运维 shell 脚本

今天咸鱼给大家分享几个不错的 Linux 运维脚本&#xff0c;这些脚本中大量使用了 Linux 的文本三剑客&#xff1a; awkgrepsed 建议大家这三个工具都要了解并最好能够较为熟练的使用 根据 PID 显示进程所有信息 根据用户输入的PID&#xff0c;过滤出该PID所有的信息 #! /b…

MySQL(三)SQL优化

SQL优化插入数据大批量数据插入主键优化order by优化group by优化limit优化count优化update优化插入数据 需要一次性往数据库表中插入多条记录&#xff0c;可以从以下三个方面进行优化 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into t…

Salesforce 2023财年逆风增长,现金流达历史最高!

在过去的一年里&#xff0c;Salesforce一直是华尔街最关注的公司之一。3月1日&#xff0c;CRM领域的全球领导者Salesforce公布了截至2023年1月31日的第四季度和整个财年的业绩。 Salesforce主席兼首席执行官Marc Benioff表示&#xff1a; Salesforce全年实现了314亿美元的收入…

【备战面试】每日10道面试题打卡-Day6

本篇总结的是计算机网络知识相关的面试题&#xff0c;后续也会更新其他相关内容 文章目录1、HTTP 与 HTTPS 有哪些区别&#xff1f;2、HTTPS的加密过程是什么&#xff1f;3、GET与POST有什么区别&#xff1f;4、讲讲HTTP各个版本的区别&#xff1f;5、HTTP与FTP的区别&#xff…

【C++、C++11】可变参数模板、lambda表达式、包装器

文章目录&#x1f4d6; 前言1. 可变参数模板1.1 万能模板&#xff1a;1.2 完美转发&#xff1a;1.3 可变参数模板的使用&#xff1a;1.4 emplace_back&#xff1a;2. lambda表达式2.1 lambda表达式的定义&#xff1a;2.2 lambda表达式的用法&#xff1a;2.2 - 1 捕捉列表的用法…

manacher算法详解

例题 求一个字符串的最长回文子串的长度 O(N2)O(N^2)O(N2)的解法很容易想&#xff0c;就是从每个字符位置向左右同时拓展&#xff0c;然后检查当前是不是回文&#xff0c;更新长度&#xff0c;可以简单写一下代码 int solve(string &ss){int ans 0;int n ss.length();s…

从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具

从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具 文章目录1. 神经网络数据预处理1.1 常规预测情景1.2 文本预测场景2.全连接神经网络 DNN3.卷积神经网络CNN4.循环神经网络 RNN5.长短期记忆神经网络 LSTMʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔ…

【数据结构】详解空间复杂度

Yan英杰的博客 悟已往之不谏 知来者之可追 目录 空间复杂度 ​案例1:计算BubbleSort的空间复杂度&#xff1f; 案例2:计算斐波那契额数列的前N项的空间复杂度 案例3:计算阶乘递归Fac的空间复杂度&#xff1f; 案例4:F1和F2两函数是否使用的同一块空间 案例5:计算该…

git团队合作 - branch分支的使用、主分支合并、冲突处理方案

情景例子开发部3人&#xff0c;组长man&#xff0c; 组员devA&#xff0c;devB&#xff1b;1&#xff09;组长man负责代码合并、冲突处理、检查代码、合并代码到master主分支&#xff1b;2&#xff09;组员devA负责开发3&#xff09;组员devB负责开发git仓库主次分支安排1&…

windows下qt creator 配置编译环境gcc,g++,gdb,cmake

MSVC&#xff1a;即Microsoft Visual C Compiler&#xff0c;即微软自己的编译器 MinGW&#xff1a;我们都知道GNU在Linux下面鼎鼎大名的gcc/g&#xff0c;MinGW则是指Minimalist GNU for Windows的缩写 这里我们选择MinGW&#xff0c;至于Qt中&#xff0c;这两种模式的区别&…

Python入门自学进阶-Web框架——34、富文本编辑器KindEditor、爬虫初步

KindEditor是一个轻量级的富文本编辑器&#xff0c;应用于浏览器客户端。一、首先是下载&#xff1a;http://kindeditor.net/down.php&#xff0c;如下图下载后是解压缩后&#xff1a;红框选中的都可以删除到&#xff0c;这些主要是针对不同的语言编写的示例&#xff0c;因为我…