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

如何用PromQL查询符合条件的activation_time指标,实现应用长时间未重启告警?

用PromQL实现长时间未重启应用的告警查询

完全可以通过PromQL实现这个需求,以下是具体的查询方法和细节:

核心查询语句

要筛选出启动时间超过2个月(近似60天)的应用,直接用这条PromQL:
activation_time < (time() - 60*60*24*60) * 1000

语句解释

  • time():PromQL内置函数,返回当前Unix时间戳(单位:秒)
  • 60*60*24*60:60天的总秒数(1天=86400秒,60天=86400*60)
  • 乘以1000是为了把秒级时间戳转成毫秒级,和你的activation_time指标单位对齐(你的示例值是1689550299110,属于毫秒级)
  • 这条查询会返回所有启动时间早于60天前的应用实例的activation_time指标

告警规则示例

如果要把这个查询做成Prometheus告警规则,可以参考下面的配置:

groups:
- name: application_health
  rules:
  - alert: ApplicationLongRunning
    expr: activation_time < (time() - 60*60*24*60) * 1000
    for: 5m  # 持续5分钟满足条件才触发告警,避免误报
    labels:
      severity: warning
    annotations:
      summary: "应用 {{ $labels.instance }} 运行超60天未重启"
      description: "该应用启动时间为 {{ $value | humanizeTimestamp }},已连续运行超过60天,建议重启以规避性能下降风险。"

注意事项

  • 关于"2个月"的精确性:因为不同月份天数不同(比如28/29/30/31天),PromQL没有直接处理自然月的函数,所以通常用近似天数替代。你可以根据实际业务调整天数,比如用56天(8周)或63天(9周)更贴近两个月的平均时长。
  • 时间戳单位校验:如果你的activation_time实际是秒级时间戳(比如1689550299),那去掉查询里的*1000即可,保证单位一致才能正确比较。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:48:16