当前位置: 首页 > 知识库问答 >
问题:

当吊舱运行时间过长时,普罗米修斯发出警报

广乐邦
2023-03-14

我遇到了一点麻烦,因为这似乎是一个简单的问题。

我的场景:我有一个k8s作业,它可以在任何时候运行(不是cronJobs),这反过来又创建了一个pod来执行一些任务。一旦豆荚完成了它的任务,就完成了产生它的工作。

我尝试的是:以下普罗米修斯度量,这是一个即时向量,可以是0(pod不运行)或1(pod正在运行):

kube_pod_status_ready{condition="true",pod_name=~".+POD-A.+"}

我想我试着用这个指标和下面的公式来计算一天中指标为1的持续时间

(1 - avg_over_time(kube_pod_status_ready{condition="true",pod_name=~".+POD-A.+"}[1d])) * 86400 > 3600

因为这些豆荚来来往往并不总是存在,我遇到了以下问题:

  • 上面的expr从86400值开始,一旦容器运行,最终会下降,这将触发警报
  • pod最终会消失,我不想为不再运行的pod发出假警报(尽管它们运行了1h)

共有1个答案

冯渝
2023-03-14

感谢@HelloWorld的建议,我认为这将是实现我想要的最好的解决方案:

(sum_over_time(kube_pod_status_ready{condition="true",pod_name=~".+POD-A.+"}[1d:1s]) > 3600) and (kube_pod_status_ready{condition="true",pod_name=~".+POD-A.+"}==1)
  • 计算pods在过去一天/6小时/3小时内运行的次数,并验证是否超过1小时(3600秒)和
  • 检查吊舱是否仍在运行-以便不考虑旧吊舱或吊舱是否终止
 类似资料:
  • 我把普罗米修斯和格拉法纳部署到我的集群里。 当我打开仪表板时,我不会获得pod CPU使用情况的数据。 当我检查Prometheus UI时,它显示pods 0/0向上,但是我的集群中有许多pods在运行。

  • 我的kubernetes部署中有一个多容器吊舱: java redis nginx 对于每一个集装箱,普罗米修斯出口商也有一个集装箱。 问题是,如果annotations部分只支持每个pod一个端口,我如何向Prometheus公开这些端口? 但是我需要这样的东西: 也许还有其他方法可以从我的多容器pod中获取所有指标?提前感谢您的帮助。

  • 摘要 由于导入的Grafana仪表板无法工作,我正在尝试找出如何在Prometheus查询中正确使用或运算符。

  • 我正在编写一个Prometheus Exporter,用于公开从AIX服务器推送的度量。AIX服务器将它们的度量(json格式)推送到一个中央侦听器(导出程序),该侦听器将它们转换为标准的Prometheus度量,并将它们公开以进行刮取。 我遇到的问题是,度量的主机名是从推送的json中提取的。我将其存储为每个度量中的标签。例如,njmon_memory_free{lpar=“myhostname

  • 我将我的GKE API服务器升级到1.6,并正在将节点升级到1.6,但遇到了一个障碍... 我有一个prometheus服务器(版本1.5.2),运行在一个由Kubernetes部署管理的pod中,其中两个节点运行版本1.5.4Kubelet,一个新节点运行版本1.6。 但普罗米修斯仍然得到401。 更新:就像乔丹所说的kubernetes认证问题。在这里看到新的、更集中的问题;https://s

  • 我在库伯内特斯星系群中运行普罗米修斯。所有的都在运行find,我的UI播客正在计算访客数。 请忽略标题,你在这里看到的是图像底部的查询。这是一个柜台。图中的间隙是由于pods重新启动造成的。我有两个吊舱同时运行! 现在假设我要计算访客总数,所以我需要对所有的吊舱求和 这就是我对第一张图片的期望,对吗? 但是,我不希望pod重新启动时图形下降。我希望在指定的时间内积累一些东西(以某种方式忽略POD重