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

如何基于Prometheus数据源合并SQL实例运行时长指标为dd hh:mm格式?

解决方案:仅用Prometheus数据源实现dd hh:mm格式展示

完全可以实现,给你两种可行方案,适配不同的Prometheus版本:

方案一:PromQL直接生成格式化字符串(要求Prometheus 2.40及以上)

利用PromQL的字符串处理函数,直接把三个指标拼接成目标格式:

concat(
  string(mssql_server_uptime_days),
  " ",
  printf("%02d", mssql_server_uptime_hours),
  ":",
  printf("%02d", mssql_server_uptime_minutes)
)
  • 注意要保证三个指标的标签完全匹配(比如实例ID、机器标识这类标签一致),这样Prometheus才能正确关联同一实例的三个数值
  • printf("%02d", ...)是为了让小时和分钟始终显示两位数字,比如5分钟会变成05,避免出现dd h:m的不规整格式

方案二:先算总分钟数,再在Grafana里格式化(兼容所有Prometheus版本)

如果你的Prometheus版本较旧,不支持printf函数,就先把三个指标转换成总分钟数,再让Grafana完成格式转换:

1. 用PromQL计算总运行分钟数

mssql_server_uptime_days * 1440 + mssql_server_uptime_hours * 60 + mssql_server_uptime_minutes

2. 在Grafana面板里配置显示格式

以常用的Stat面板为例:

  • 添加上面的查询后,进入Panel options > Value options
  • 找到Unit选项,选择Custom,然后输入dd hh:mm
  • 如果默认的时间单位格式化不符合预期(比如天数超过30会被自动转成月),可以用自定义模板:
    进入Value formatting > Custom,输入模板:
    {{ div value 1440 }}d {{ printf "%02d" (mod (div value 60) 24) }}:{{ printf "%02d" (mod value 60) }}
    
    这个模板会强制按天、两位小时、两位分钟的格式输出,不会自动转换单位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:07:36