You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana图例中显示$__interval倍数的动态间隔值?

解决Grafana别名中实现动态间隔计算的方法

方法1:利用内置间隔变量+模板函数

Grafana内置了$__interval(当前查询间隔,格式如1m)和$__interval_ms(间隔对应的毫秒数值)变量,结合math()模板函数可直接在别名中完成计算:

  • 示例别名(将毫秒转换为秒):
    访问量 (间隔: ${math($__interval_ms / 1000)}秒)
    
  • 示例别名(同时展示原间隔与转换后单位):
    CPU使用率 (间隔: ${__interval} = ${math($__interval_ms / 60000)}分钟 = ${math($__interval_ms / 1000)}秒)
    

方法2:自定义间隔变量+正则提取计算

如果使用了自定义的间隔类型变量(比如命名为custom_interval),可通过正则提取数值后进行运算:

  1. 先创建自定义间隔变量:类型选「Interval」,设置所需的可选间隔值(如1m、5m、1h)
  2. 在别名中用正则提取变量中的纯数字部分,再做乘法/除法转换:
    内存使用率 (间隔: ${custom_interval} = ${math(${regexReplaceAll("[^0-9]", "$custom_interval", "")} * 60)}秒)
    
    注:regexReplaceAll("[^0-9]", "$custom_interval", "")会把5m这类格式的变量提取为纯数字5,再结合math()完成计算。

方法3:通过查询语句传递计算值(适用于PromQL等数据源)

如果是Prometheus这类支持标签的数据源,可在查询中用label_replace函数生成包含计算后间隔值的标签,再在别名中引用:

  • 示例PromQL查询:
    label_replace(rate(node_cpu_seconds_total[${custom_interval}]), "interval_sec", "${math(${regexReplaceAll("[^0-9]", "$custom_interval", "")} * 60)}", "", "")
    
  • 随后将别名设置为:CPU使用率 (间隔: $interval_sec 秒)

注意:math()模板函数从Grafana 8.0版本开始支持,若使用旧版本可优先考虑升级,或通过字符串拼接的方式间接展示转换后的值。

内容的提问来源于stack exchange,提问作者Denis Rimskii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:45:28