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



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

我遇到的问题是长时间运行的进程。我想知道有多少在任何时候运行,我似乎找不到一个好的解决方案。

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

我在这里遇到的问题是,当一个进程在 Grafana 中使用rate运算符启动时,我看到了上升,但我无法随时监控有多少正在运行。

由于两个应用程序管理同一个进程池,因此我实际上无法使用仪表来报告当前正在运行的进程数,因为进程可能在实例 A 上启动,然后在实例 B(或任何其他正在运行的应用程序实例(上停止。(并且将从共享数据库中请求进程数,因此会膨胀(。

现在我尝试的一种方法是减去started - finished计数器以得到当前正在运行的实例。但是,如果将进程报告为在某个时间点完成的应用程序将在 Prometheus 抓取指标之前重新启动或死亡,这将很快失去同步(所以我会进入 0 不再是基线的状态(。

关于如何处理这个问题的任何建议?

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

您可以将其添加到您的应用程序中或使用进程导出器(我还没有使用这个(。

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

最新更新