首页 文章

Prometheus跟踪HA环境中的长时间运行过程

提问于
浏览
1

我正在运行Prometheus来监控我的系统,目前正在构建应用程序级指标 .

我遇到的问题是长时间运行的进程 . 我想知道有多少人在任何时候都在跑步,而且我似乎无法通过普罗米修斯为此找到一个好的解决方案 .

这些进程从多个冗余应用程序运行异步,这些应用程序同时接收流量 . 这些过程在10分钟到几个小时之间运行,所以我最初的天真方法是在进程启动时计算一个计数器,并在进程停止时递增另一个计数器 .

我在这里遇到的问题是,当我在Grafana中使用 rate 运算符启动进程时,我看到了上升,但我无法监视有多少运行在任何时间 .

由于两个应用程序正在管理相同的进程池,因此我无法使用计量器来报告当前正在运行的进程数,因为进程可能在实例A上启动,然后在实例B(或任何其他正在运行的应用程序实例)上停止) . (并且将从共享数据库请求进程数量,因此它将被夸大) .

现在我尝试的方法是减去 started - finished 计数器以获取当前正在运行的实例 . 但是,如果报告某个过程在某个时刻完成的应用程序将重新启动或在prometheus刮取度量标准之前死亡(这样我将进入0不再是基线的状态),这将很快失去同步 .

有关如何处理这个的任何建议?

1 回答

  • 0

    也许您可以通过查看每台计算机上的进程列表来计算正在运行的进程数(您在问题中将其称为实例A和B) . 每台机器都会报告正在运行的作业数 . 要显示所有计算机上正在运行的作业总数,请使用sum() .

    您可以将此添加到您的应用程序或使用process exporter(我还没有使用这个) .

    您甚至可以应用一个简单的shell脚本来计算进程并填充由节点收集器提供服务的文本文件(请参阅文本文件收集器作为node exporter的一部分) .

相关问题