#java #prometheus-pushgateway
Вопрос:
У нас есть java — приложение под названием MonitorApp
, которое работает в контейнере docker. Цель этого приложения состоит в том, чтобы выполнять определенные задачи, нажимать на метрики Pushgateway
и умирать.
Это приложение для мониторинга запускается как Kubernetes Cron Job
. Это означает, что после публикации матриц оно будет уничтожено, и через некоторое время появится новый экземпляр.
Я использую API Java Pushgateway
для публикации матриц. Вот мой пример кода для того же:
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);
}
}
Проблема в том, что я не могу увеличить значение показателя счетчика.
Я не могу найти способ получить предыдущее значение счетчика, чтобы увеличить его.
Я читал, что цель Pushgateway
состоит в том, чтобы обрабатывать такого рода варианты использования.
Пожалуйста, подскажите, как мне с этим справиться?
Ответ №1:
Насколько я понимаю, вы хотите, чтобы метрика увеличивалась между несколькими запусками вашего экземпляра. Это не является целью шлюза push: он будет хранить только те значения, которые вы нажимаете, а не агрегировать их каким — либо образом, кроме добавления/замены группы показателей.
Хотя я никогда их не использовал, существуют решения для агрегирования с использованием других стеков мониторинга (например, statd) или конкретных проектов, таких как pushprom. Вы также можете запускать запуски как события (например, в elasticsearch) для дальнейшей агрегации.
Если это действительно чувствительная часть мониторинга вашего приложения, я советую вам держаться подальше от решений SPOF. Вы можете создать свой собственный кэш метрик, используя любое (распределенное) хранилище ключей/значений, имеющееся в вашем распоряжении.