Неправильная проблема Pu sh metri c при использовании Prometheus pu sh gateway simpleclient в весенней загрузке - PullRequest
0 голосов
/ 08 апреля 2020

Я использую простой клиент Prometheus для сбора метрик в моей системе через приложение весенней загрузки.

void insertBatchJob(String request , String[] labelNames, String[] labelValues,String counter) throws Exception {
            CollectorRegistry registry = new CollectorRegistry();
            Gauge inprogressRequests ;
            if( !gaugeRegiseryMap.containsKey(request) ) {
                inprogressRequests = Gauge.build()
                        .name(request).labelNames(labelNames).help(request).register();
                gaugeRegiseryMap.put(request,inprogressRequests);
            }else{
                inprogressRequests = gaugeRegiseryMap.get(request);
            }
            try {
                inprogressRequests.labels(labelValues[labelValues.length-4],
                        labelValues[labelValues.length-2],
                        labelValues[labelValues.length-3],
                        labelValues[labelValues.length-1]).set(Double.parseDouble(counter));
                registry.register(inprogressRequests);
            } finally {
                PushGateway pg = new PushGateway("127.0.0.1:9091");
                pg.pushAdd(registry, request);
            }
        }

следующий код работает, но когда я изменяю inprogressRequests.labels (), когда я передать массив, содержащий значения меток, например

` 

    void insertBatchJob(String request , String[] labelNames, String[] labelValues,String counter) throws Exception {
            CollectorRegistry registry = new CollectorRegistry();
            Gauge inprogressRequests ;
            if( !gaugeRegiseryMap.containsKey(request) ) {
                inprogressRequests = Gauge.build()
                        .name(request).labelNames(labelNames).help(request).register();
                gaugeRegiseryMap.put(request,inprogressRequests);
            }else{
                inprogressRequests = gaugeRegiseryMap.get(request);
            }
            try {
                inprogressRequests..labels(labelValues).set(Double.parseDouble(counter));
                registry.register(inprogressRequests);
            } finally {
                PushGateway pg = new PushGateway("127.0.0.1:9091");
                pg.pushAdd(registry, request);
            }
        }` 

, то же самое дает ошибку -

Код ответа от http://127.0.0.1: 9091 / metrics / job / loop6_2 было 400, тело ответа: заданные метрики недействительны или несовместимы с существующими метриками: собранные метри c.

Я впервые использую Прометей, будет хорошо, если кто-то может поделиться светом на это.

1 Ответ

0 голосов
/ 22 апреля 2020

Попробуйте нажать пустую метрику c, эта проблема возникает, когда вы пытаетесь толкнуть одну и ту же метрику c дважды за один пример pu sh .FOr, добавляя более одной выборки с одинаковыми метками в метри c или если шлюз был перезапущен, вы не сможете отправить тот же самый метри c, вы должны сначала удалить его.

см .: https://github.com/prometheus/pushgateway/blob/master/README.md

on код состояния 400

...