前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Grafana 监控面板绘制流程

Grafana 监控面板绘制流程

作者头像
Apache IoTDB
发布2023-03-21 20:09:43
2K0
发布2023-03-21 20:09:43
举报
文章被收录于专栏:Apache IoTDBApache IoTDB

本篇作者:

IoTDB 社区 -- 张洪胤

本文以 IoTDB V1.0.1 版本为例

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

1

监控指标的 Prometheus 格式说明

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

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 子句来决定聚合方式,对应语法规约为:

代码语言:javascript
复制
<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 请求速率:

代码语言:javascript
复制
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 请求的每秒速率:

代码语言:javascript
复制
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)

3.2

创建 Panel

优秀绘制参考:

https://play.grafana.org/dashboards

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

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

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

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

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

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

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

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

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

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

c. Hidden:不显示。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4

导出 Grafana

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Apache IoTDB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档