GCP MQL:根据 3 个指标计算比率

Posted

技术标签:

【中文标题】GCP MQL:根据 3 个指标计算比率【英文标题】:GCP MQL: Calculate ratio from 3 metrics 【发布时间】:2022-01-19 14:57:19 【问题描述】:

我在我的 GCP 中创建了 3 个指标 1) 成功请求计数 2) 重定向请求计数和 3) 失败请求计数。所有 3 个指标都是从 Kubernetes 日志上基于日志的指标创建的。

这里基本上是一个度量“成功请求”的 Terraform 资源定义。

resource "google_logging_metric" "success_requests" 
  filter      = <<-EOT
    resource.type="k8s_container"
    jsonPayload.message:"Request success"
  EOT
  name        = "success_requests"
  project     = var.gcp_project_id

  metric_descriptor 
    metric_kind = "DELTA"
    unit        = "1"
    value_type  = "INT64"
  

另外两个基本上只是用Request redirectedRequest failed过滤jsonPayload.message

我想用这个公式创建一个显示成功率的仪表板

success_rate = success_requests / (success_requests + redirected_requests + failed_requests)

我成功创建了一个仪表板,使用以下 MQL 显示三个指标。

k8s_container |  
    t_0:
        metric logging.googleapis.com/user/success_requests;
    t_1: 
        metric logging.googleapis.com/user/redirected_requests;
    t_2: 
        metric logging.googleapis.com/user/failed_requests
 | union

但是我如何创建一个仪表板,用前面提到的公式显示成功率?

【问题讨论】:

【参考方案1】:

要使用指标执行一些算术运算,您需要使用Arithmetic Computation 处理时间序列

要对两个时间序列求和,请将查询配置为获取两个表 时间序列,加入这些结果,然后调用 add 函数。这 下面的示例说明了一个计算总和的查询 从 Compute Engine 实例读取和写入的字节数:

  fetch gce_instance
  |  metric 'compute.googleapis.com/instance/disk/read_bytes_count'
    ; metric 'compute.googleapis.com/instance/disk/write_bytes_count' 
  | outer_join 0
  | add

总结三个时间序列后可以使用div function.

以下查询使用 time_shift、join 和 div 来计算每个区域从现在到一周前的平均利用率比率。

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| group_by [zone], mean(val())
| 
    ident
  ;
    time_shift 1w
  
| join | div

您可以查看更多使用 MQL in this Link. 的查询示例

您可以查看更多在 MQL in this link. 中实现算术运算符的函数

【讨论】:

【参考方案2】:

我相信您需要的是 external_join 而不是联合。请注意,MQL 的 outer_join 仅支持加入两个指标。但是你可以使用两个outer_join操作来连接三个表,如下所示。

加入指标后,您可以通过success_requestsfailed_requests 等名称简单地引用它们。

请注意,outer_join 0,0 对两个表执行完全外连接,如果其中一个输入流在给定时间戳处没有值,则替换为 0。

例子:


  k8s_container :: logging.googleapis.com/user/success_requests ;
   k8s_container :: logging.googleapis.com/user/redirected_requests
  | outer_join 0,0 ;
  k8s_container :: logging.googleapis.com/user/failed_requests
 
| outer_join 0,0
| value [success_rate: success_requests / (success_requests + redirected_requests + failed_requests)]

【讨论】:

以上是关于GCP MQL:根据 3 个指标计算比率的主要内容,如果未能解决你的问题,请参考以下文章

无法使用自定义内存指标自动缩放 GCP 实例

mql4如何自定义画图

MT4平台上mql4实现的基于macd指标的智能交易EA

成交量比率VR指标的原理是啥?

统计分析丨用Python制作一份电影排行榜——以熵权法为例

GCP AI Platform API - 类级别的对象检测指标 (Python)