0

我在 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"
  }
}

其他 2 基本上只是jsonPayload.messageRequest redirectedand过滤Request failed

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

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

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

4

2 回答 2

0

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

要对两个时间序列求和,请将查询配置为获取两个时间序列表,连接这些结果,然后调用 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 函数。

以下查询使用 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 的查询示例。

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

于 2021-12-16T21:55:52.533 回答
0

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

加入指标后,您可以简单地通过 、 等名称来引用success_requests它们failed_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)]
于 2022-01-05T15:43:02.063 回答