【问题标题】:Prometheus track long running processes in a HA environmentPrometheus 在 HA 环境中跟踪长时间运行的进程
【发布时间】:2017-07-13 10:24:43
【问题描述】:

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

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

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

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

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

现在我尝试的一种方法是减去 started - finished 计数器以获取当前正在运行的实例。但是,如果在 prometheus 删除指标之前,报告进程已完成的应用程序将重新启动或死亡,这将很快失去同步(因此我将进入 0 不再是基线的状态)。

对如何处理有什么建议吗?

【问题讨论】:

    标签: monitoring grafana prometheus


    【解决方案1】:

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

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

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

    【讨论】:

    • 不幸的是,由于进程是跨实例共享的,因此这会超出实例数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多