GCP监控MQL语言使用问题:单位转换与图例自定义
解决GCP监控MQL的两个问题:单位转换与自定义图例
1. 字节转MB单位
MQL默认返回原始字节值,要转换为MB,只需在计算均值时除以1048576(1MB=1024*1024字节),也可通过unit()函数显式标注单位。
2. 自定义图例内容
通过add_label()或label_map()函数,结合资源字段与指标类型生成清晰的图例名称,比如区分Max/Used内存并带上命名空间标识。
优化后的合并查询(同图表展示Max/Used内存)
// 获取Max内存并处理单位、添加标签 fetch k8s_container | metric 'external.googleapis.com/jvm/memory/max' | filter (resource.namespace_name == 'NAMESPACE' && resource.pod_name =~ 'POD_NAME') | group_by 1m, [value_max_mean: mean(value.max) / 1048576] | every 1m | add_label(metric_type, 'JVM Max Memory') | group_by [resource.namespace_name, metric_type], [value_max_mean: mean(value_max_mean)] // 合并Used内存查询 join fetch k8s_container | metric 'external.googleapis.com/jvm/memory/used' | filter (resource.namespace_name == 'NAMESPACE' && resource.pod_name =~ 'POD_NAME') | group_by 1m, [value_used_mean: mean(value.used) / 1048576] | every 1m | add_label(metric_type, 'JVM Used Memory') | group_by [resource.namespace_name, metric_type], [value_used_mean: mean(value_used_mean)] // 生成自定义图例 | group_by [resource.namespace_name, metric_type], [ value_max_mean: mean(value_max_mean), value_used_mean: mean(value_used_mean) ] | label_map(resource.namespace_name + ' - ' + metric_type, 'legend')
分查询单独优化(保留原结构)
Max内存查询(转MB+自定义图例)
fetch k8s_container | metric 'external.googleapis.com/jvm/memory/max' | filter (resource.namespace_name == 'NAMESPACE' && resource.pod_name =~ 'POD_NAME') | group_by 1m, [value_max_mean: mean(value.max) / 1048576] | every 1m | group_by [resource.namespace_name], [value_max_mean: mean(value_max_mean)] | add_label(legend, resource.namespace_name + ' - JVM Max Memory (MB)')
Used内存查询(转MB+自定义图例)
fetch k8s_container | metric 'external.googleapis.com/jvm/memory/used' | filter (resource.namespace_name == 'NAMESPACE' && resource.pod_name =~ 'POD_NAME') | group_by 1m, [value_used_mean: mean(value.used) / 1048576] | every 1m | group_by [resource.namespace_name], [value_used_mean: mean(value_used_mean)] | add_label(legend, resource.namespace_name + ' - JVM Used Memory (MB)')
说明:
- 单位转换:若需十进制MB(1MB=1000*1000字节),将除数改为
1000000即可 - 自定义图例:可根据需求调整
add_label或label_map中的字符串格式,比如添加Pod名称等额外信息
内容的提问来源于stack exchange,提问作者syncerror
相关产品推荐
相关产品推荐

