当前位置: 首页 > news >正文

InfluxDB + Grafana计算成功率

文章目录

      • 方式一 借助Grafana的Transfrom
      • 方式二 Influx子查询
      • Transfrom介绍

建议针对每类Metric,使用一个Metric,增加success的tag区分成功还是失败。

方式一 借助Grafana的Transfrom

第一步:新建2个Query

  • Query Total:

    SELECT sum("count") as "total" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/) AND $timeFilter
    
  • Query Success:

    SELECT sum("count") as "success" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/ AND "success" = true) AND $timeFilter
    

第二步:在Transform处增加Outer joinField Name选择Time

第三步: 在Transform处增加Add field from calculation

  • Mode: Binary operation
  • Operation:

问题:如果 第一步 的查询中没有数据,即没有一条记录,那么这个查询无法返回0这种。导致绘图失败。

方式二 Influx子查询

针对上面的问题当没有记录,不显示默认0的问题,我们可以通过子查询+fill(0)

第一步:新建1个Query子查询+fill(0)

SELECT "success"  , "total"
	 FROM ( 
           SELECT sum("count") as "total" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/) AND $timeFilter
		   ), (
           SELECT sum("count") as "success" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/ AND "success" = true) AND $timeFilter
           )
	fill(0)

此时结果如下图:

1.当没值的时候显示情况

2.当有值的时候显示情况

这之后也可以配合Transform使用了,例如Reduce - Calcuations = max,这里不讲了,反正Transfrom很强大哈。

第二步:针对第一步的结果包装一层。

SELECT sum("success") as tsuccess , sum("total") as ttotal
		FROM 
		( // start
	 SELECT "success"  , "total"
	 FROM ( 
           SELECT sum("count") as "total" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/) AND $timeFilter
		   ), (
           SELECT sum("count") as "success" FROM "laker_test" WHERE ("cluster" =~ /^$Region$/ AND "success" = true) AND $timeFilter
           )
	fill(0)
         // end 这是第一步的sql
        ) Group by time($interval) fill(0)

在这里插入图片描述

第三步:针对第二步的结果包装一层。

select 
	 sum("tsuccess") / sum("ttotal") as rate
from 
	(
        第二步的sql
    )

Transfrom介绍

参考:https://blog.51cto.com/u_12227788/5471570

1. Add field from calculation 从计算中添加字段

从计算中添加字段,使用其他两个字段计算的新字段,每个转换可以添加一个新的字段

mode -选择一种模式:

  • Reduce row -对选定字段的每一行独立应用选定的计算。
  • Binary option -对来自两个选定字段的单行中的值应用基本数学运算(求和、乘法等)。

Field name -如果选择 Reduce row,选择要在新字段计算中使用的字段名称。
Calculation -如果您选择Reduce row模式,则会出现calculation字段。单击该字段以查看可用于创建新字段的计算选项列表。
Operation -如果您选择Binary option模式,则会出现operation字段。这些字段允许对来自两个选定字段的单行中的值执行基本数学运算。还可以将数值用于二元运算。
Alias -(可选)输入新字段的名称。如果将此留空,则该字段将被命名为与计算匹配。

Replace all fields -(可选)如果您想隐藏所有其他字段并在可视化中仅显示您的计算字段,请选择此选项。

2.Outer join 按字段连接

使用此转换按字段连接来自结果集的多个时间序列。

如果想组合查询以便从字段计算结果,则此转换特别有用。

多个Query的场景。一般选择按Timejoin。

3.Merge 合并
使用此转换将多个查询的结果组合成一个结果。这在使用表格面板可视化时很有帮助。可以合并的值被合并到同一行。如果共享字段包含相同的数据,则值是可合并的。

多个Query的场景。没有上面的Outer Join好用

4.Concatenate fields 连接字段
将两个查询结果简单粗暴的拼接到一起

相关文章:

  • 建设商城网站多少钱/爱网站查询
  • 淘宝客网站开发视频教程/seo排名优化关键词
  • 阿里云做网站买什么软件/关键词查网站
  • 南昌的网站推广公司/青岛seo网站推广
  • 微信网站怎么做的好/武汉seo网站排名优化公司
  • 单页网站如何做/互联网营销师培训费用是多少
  • 数组常用方法总结 (6) :includes / indexOf / lastIndexOf / valueOf / toString / isArray
  • 代码随想录算法训练营第十八天二叉树 java : .106 从中序与后序遍历序列构造二叉树113. 路径总和ii 112 路径总和 513.找树左下角的值
  • MySQL进阶——存储引擎
  • npm的相关知识
  • 【MySQL】运算符及相关函数详解
  • ESP32 FreeRTOS-事件组(10)
  • 长安汽车推动新伙伴变革重塑供应链模式发布长安智电iDD技术
  • 价值创造链路及经营计划
  • Qt样式(qss)应用到QMdiArea不生效的解决
  • Go语言基础语法
  • Wisej.NET 3.1.6 Crack
  • DevOps 实战概述