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



>我在 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 个基本上只是用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

但是,如前所述,如何创建一个显示公式成功率的仪表板呢?

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

若要对两个时序求和,请将查询配置为提取两个表 时序,联接这些结果,然后调用 Add 函数。这 以下示例演示了一个查询,该查询计算 从计算引擎实例读取和写入的字节数:

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 中实现算术运算符的函数。

我相信你需要的是一个outer_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)]

相关内容

  • 没有找到相关文章

最新更新