滁州市建设工程质量检测协会网站,企业网站建设的主要步骤,wordpress评论框插件,永久免费的网站空间本篇作者#xff1a;IoTDB 社区 -- 张洪胤本文以 IoTDB V1.0.1 版本为例本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集#xff0c;并且使用 Grafana 的方式进行可视化。1监控指标的 Prometheus 格式说明对于 Metric Name 为 name, Tags 为 K1V1, ..., K…本篇作者IoTDB 社区 -- 张洪胤本文以 IoTDB V1.0.1 版本为例本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集并且使用 Grafana 的方式进行可视化。1监控指标的 Prometheus 格式说明对于 Metric Name 为 name, Tags 为 K1V1, ..., KnVn 的监控指标有如下映射其中 value 为具体值2Prometheus 函数说明2.1Aggregation 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.2Functions参考文档https://prometheus.io/docs/prometheus/latest/querying/functions/2.2.1 rate1. rate(v range-vector): 计算范围向量中时间序列的每秒平均增长率。单调性中断例如由于目标重启导致的计数器重置会自动调整。此外计算外推到时间范围的末端允许缺失周期与范围的时间段不完全对齐。2. 示例以下示例表达式返回范围向量中每个时间序列在过去 5 分钟内测量的每秒 HTTP 请求速率rate(http_requests_total{jobapi-server}[5m])3. 计算原理rate 通过计算一个新的直方图来作用于原生直方图其中每个分量观测值的总和和计数桶是 v 中第一个和最后一个原生直方图中相应分量之间的增长率。4. 适用场景适用于警报和缓慢移动的计数器。5. 注意当将 rate() 与聚合运算符例如 sum()或随时间聚合的函数任何以 _over_time 结尾的函数结合使用时始终首先采用 rate()然后进行聚合。否则 rate() 无法在您的目标重新启动时检测到计数器重置。2.2.2 irate1. irate(v range-vector)计算范围向量中时间序列的每秒瞬时增长率基于最后两个数据点。单调性中断例如由于目标重启导致的计数器重置会自动调整。2. 示例以下示例表达式通过查找 5 分钟前两个最近的数据点得出 HTTP 请求的每秒速率irate(http_requests_total{jobapi-server}[5m])3. 适用场景易变的、快速移动的计数器。4. 注意当将 irate() 与聚合运算符例如 sum()或随时间聚合的函数任何以 _over_time 结尾的函数结合使用时始终首先采用 irate()然后进行聚合。否则irate() 无法在您的目标重新启动时检测到计数器重置。3Grafana 可视化绘制官方文档参考https://grafana.com/docs/3.1创建 Dashboard如果已有 Dashboard 跳过本步骤即可1. 点击左侧边栏 Dashboards - browse a. 已有 Dashboard点击右侧 Import 按钮导入对应的 Dashboard 即可。 b. 创建 Dashboard点击右侧 New Dashboard 按钮。2. 进入 Dashboard 后点击右上角设置按钮 a. 在 General 界面更新 NameDescriptionTag等基础信息调整 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/dashboards1. 点击右上角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 的具体值比如在下图的例子中stateblocked/new/runnable/terminated/timed-waiting/waiting通过这样的方式修改图例。 c. 可以通过点击 Query 在当前面板添加更多时间序列。4. 在右侧的 Panel Options 中可以更新当前面板的标题、描述并设置面板背景是否透明。5. 在右侧的 Tooltip 中可以选择不同的类型 a. Single只显示距离鼠标最近的一条。 b. All显示鼠标所在时间线的所有条可以不排 序、升序或降序。 c. Hidden不显示。6. 在右侧的 Legend 可以调整不同的图例 a. ModeList列表、Table表格、Hidden不显示。 b. PlacementBottom放在底部、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导出 Grafana1. 点击左上角的导出按钮2. 点击 Export 标签页并选择 Export for sharing externally然后点击 save to file 就将对应的 Dashboard 的 json 文件下载到本地了。3. 最后将 Dashboard 的 json 上传到 GitHub (docs/UserGuide/Monitor-Alert文件夹下) 的对应位置即可。作为全球性开源项目截至目前Apache IoTDB 已拥有 244 名贡献者、3.1K Stars、820 Forks、8653 Commits。我们为大家提供了参与指南欢迎越来越多的小伙伴助力 Apache IoTDB 项目的不断发展与前进迈出加入 Apache IoTDB 社区的第一步