【问题标题】:Pushing metrics to pushgateway replaces the old one将指标推送到 pushgateway 替换旧的指标
【发布时间】:2021-08-12 07:12:30
【问题描述】:

我们有一个名为 MonitorApp 的 java 应用程序在 docker 容器中运行。这个应用程序的目的是执行某些任务,将指标推送到Pushgateway 并死掉。

此 MonitorApp Kubernetes Cron Job 的形式运行。这意味着在发布矩阵后,它将被杀死并在一段时间后出现一个新实例。

我正在使用 Java Pushgateway APIs 来发布矩阵。 这是我的示例代码:

class MonitorApp {

   public void static main(String args[]) {
       
        List<String> labelKeys = Arrays.asList("key01", "key02");
        List<String> labelValues = Arrays.asList("value01", "value01");

        PushGateway client = new PushGateway("localhost:9091");
        CollectorRegistry registry = CollectorRegistry.defaultRegistry;

        String jobName = "midm_monitor_app";
        String metric = "metrin_name";
        String help = "metric_help";


        Counter counter = Counter.build()
                .name(metric)
                .help(help)
                .labelNames(labelKeys.toArray(new String[0]))
                .register(registry);
        counter.labels(labelValues.toArray(new String[0])).inc();

        client.push(registry,jobName);
     }
}

问题是我无法增加 Counter 指标的值。 我无法找到一种方法来获取以前的计数器值以便增加它。

我读过Pushgateway 的目的是处理这种用例。

请建议我应该如何处理?

【问题讨论】:

    标签: java prometheus-pushgateway


    【解决方案1】:

    据我了解,您希望在实例的多次运行之间增加一个指标。这是not the goal of the push gateway:它只会存储您推送的值 - 除了添加/替换指标组之外,不会以任何方式聚合它们。

    虽然我从未使用过它们,但有一些解决方案可以使用其他监控堆栈(如 statd)或特定项目(如 pushprom)进行聚合。您还可以将运行作为事件推送(例如在 elasticsearch 中)以进行进一步聚合。

    如果它确实是您应用程序监控的敏感部分,我建议您远离 SPOF 解决方案。您可以利用任何(分布式)键/值存储来滚动您自己的指标缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多