GCP MQL 查询:正在获取 metrics/minute

GCP MQL query: getting metrics/minute

这个查询给了我 metrics/sec:

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)]

如何获得metrics/minute?

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

对此的一个变体是将 "1" 替换为正在计算的事物的注释:`"{requests}/min"。 units 是根据 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 给出了查询输出的范围(即使最后没有给出)。放在最后是个好主意。