首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCP MQL:从3个指标计算比率

GCP MQL:从3个指标计算比率
EN

Stack Overflow用户
提问于 2021-12-16 14:05:46
回答 2查看 1.5K关注 0票数 1

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

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

代码语言:javascript
复制
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过滤Request redirectedRequest failed

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

代码语言:javascript
复制
success_rate = success_requests / (success_requests + redirected_requests + failed_requests)

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2021-12-16 21:55:52

要使用度量执行一些算术操作,需要使用算术计算处理时间序列。

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

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

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

代码语言:javascript
复制
fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| group_by [zone], mean(val())
| {
    ident
  ;
    time_shift 1w
  }
| join | div

您可以使用MQL 在这个链接中。查看更多查询示例。

您可以查看更多在MQL 在这个链接中。中实现算术运算符的函数。

票数 0
EN

Stack Overflow用户

发布于 2022-01-05 15:43:02

我相信你需要的是一个outer_join而不是工会。请注意,MQL的outer_join只支持连接两个度量标准。但是,您可以使用两个outer_join操作连接三个表,如下所示。

加入这些度量标准后,您可以简单地使用success_requestsfailed_requests等名称来引用它们。

注意,如果一个输入流在给定的时间戳上没有值,outer_join 0,0将对两个表执行一个完整的外部连接,并替换一个0。

示例:

代码语言:javascript
复制
{
  {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)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70380359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档