首页 > 解决方案 > GCP MQL 查询:获取指标/分钟

问题描述

这个查询给了我指标/秒:

fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count
                | within 5m
                | align rate(1m)
                | every 1m
                | group_by
                    [ metric.cache_result,metric.proxy_continent,metric.response_code_class,metric.response_code,metric.protocol,resource.backend_name,resource.backend_type,resource.backend_scope,resource.backend_scope_type,resource.backend_target_type,resource.backend_target_name,resource.forwarding_rule_name,resource.matched_url_path_rule,resource.target_proxy_name,resource.url_map_name,resource.region,resource.project_id ],
                    [value_request_count_aggregate: aggregate(value.request_count)]

如何获得指标/分钟?

标签: google-cloud-platformgoogle-cloud-monitoringmonitoring-query-language

解决方案


指标的单位是"1"(就像大多数计数器指标一样)。速率校准器的结果始终是每秒。所以对齐器的输出有单位"1/s"。MQL 有一个scale[ 可用于缩放值的函数。在这种情况下,| value scale(val(), "1/min")在对齐步骤之后添加可用于将其缩放为具有单位“1/min”。(一种快捷的说法是| scale "1/min"

对此的一种变体是将 替换为"1"正在计数的事物的注释:“{requests}/min”。单位是根据UCUM 单位标准给出的

那么查询是

fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count
                | align rate(1m)
                | scale "{requests}/min"
                | every 1m
                | group_by
                    [metric.cache_result,metric.proxy_continent,
                     metric.response_code_class,metric.response_code,
                     metric.protocol,resource.backend_name,
                     resource.backend_type,resource.backend_scope,
                     resource.backend_scope_type, resource.backend_target_type,
                     resource.backend_target_name, resource.forwarding_rule_name, 
                     resource.matched_url_path_rule,
                     resource.target_proxy_name, resource.url_map_name,
                     resource.region,resource.project_id ],
                    [value_request_count_aggregate:
                       aggregate(val(0))]
                | div 60
                | within 5m

最终样式注释: within给出查询输出的范围(即使最后没有给出)。把它放在最后是个好主意。


推荐阅读