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 redirected
和Request 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_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)]
【讨论】:
以上是关于GCP MQL:根据 3 个指标计算比率的主要内容,如果未能解决你的问题,请参考以下文章