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

Grafana中Prometheus数据源下currentDate/currentHour变量配置求助

Grafana + Prometheus 动态日期/小时变量配置方案

问题原因

Grafana的Query类型变量对Prometheus函数的返回格式有硬性要求——必须是标签值列表,但hour()这类函数返回的是带时间戳的瞬时向量,不符合变量的预期格式,所以会报错;而Prometheus控制台本身支持直接输出这类向量,因此能正常显示结果。

替代实现方案

不需要依赖Prometheus的hour()/日期函数,直接用Grafana内置变量或适配格式的PromQL来定义变量:

1. 今日日期变量(格式:YYYY-MM-DD)

  • 方案一:Text类型变量(推荐)
    变量类型选「Text」,在「Default value」中填入Grafana内置时间模板:

    ${__date:YYYY-MM-DD}
    

    若不需要手动修改日期,可在「Hide」选项中选择「Variable」,让变量自动动态获取当前日期。

  • 方案二:Query类型变量
    用PromQL生成格式化日期字符串,变量查询语句填:

    vector(strftime("%Y-%m-%d", time()))
    

    然后在「Regex」字段填入 (.*),提取出日期字符串作为变量值。

2. 当前小时变量(格式:24小时制,如14)

  • 方案一:Text类型变量(推荐)
    变量类型选「Text」,「Default value」填入:

    ${__date:HH}
    

    同样可选择隐藏变量,自动获取当前24小时制小时数。

  • 方案二:Query类型变量
    变量查询语句填:

    vector(strftime("%H", time()))
    

    「Regex」字段填入 (.*),提取小时数值。

额外技巧:直接在PromQL中使用当前时间筛选

如果不需要单独定义变量,可直接在指标查询中嵌入时间判断,比如筛选今日数据:

your_metric{job="your_job"} and on() (day_of_month(time()) == day_of_month(vector(time())))

筛选当前小时的数据:

your_metric{job="your_job"} and on() (hour(time()) == hour(vector(time())))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:20:37