Прометей и Узел экспортер в миллисекундах - PullRequest
1 голос
/ 25 марта 2020

У меня есть приложение express узла с Prom-клиентом для мониторинга последовательного соединения и передачи значений конечной точке http, скорость последовательного соединения составляет 9600 бод и передает некоторые статистические данные. Экземпляр Prometheus настроен с заданием с интервалом в 10 миллисекунд, чтобы нацелиться на эту конечную точку и получить показатели. Я хочу видеть эту метрику с разрешением не менее 10 миллисекунд, но, похоже, разрешение графа Прометея не принимает менее 1 секунды. Что я должен сделать, чтобы Прометей собирал данные с разрешением не менее 10 миллисекунд. Есть ли конфиг, по которому я скучаю? Я искал часы

, это мое приложение node js, прослушиватель последовательного порта ожидает json сообщений, анализирует их и обновляет типы метрических метри c из 'prom-client' для представления по express!

const serialPath = '/dev/tty.usbmodem14201';
const port = new SerialPort(serialPath, {
   baudRate: 9600
});
const parser = new Readline();
port.pipe(parser);
parser.on('data', (line) => {
        try {
            const obj = JSON.parse(line);
            if (obj.command !== undefined) {
                console.log(obj);
            }

            if (obj.a) {
                obj.a.forEach((analog) => {
                    analogGuage.set({
                        pin: analog.i
                    }, analog.v);
                })
            }
        } catch (ex) {
            console.log('Exception in parsing serial json:', ex);
            console.log('Exception in parsing serial json:', line);
        }
    });

конечная точка метрики для вызова прометея каждые 10 мс

    expressApp.get('/metrics', (req, res) => {
        const metrics = client.register.metrics();
        res.set('Content-Type', client.register.contentType);
        res.end(metrics);
    });

Важно упомянуть все это для экспериментальной персональной встроенной системы :) так что нет Имеются узкие места или соображения производительности, за исключением возможности передавать и анализировать последовательное чтение менее чем за 10 мс

, так как сейчас Prometheus и приложение экспортера узлов работают на моем P C, поэтому интервалы в 10 мс кажутся просто для выпускного.

Пожалуйста, помогите.

Ответ Редактировать: , поэтому я решил отказаться от Prometheus вместо InfluxDB, так как обе лицензии разрешают доступ к источнику, и они продвигают миллис c, nanose c мониторинга, но для будущей справки 9600 бод тоже было недостаточно, но все же после скорости 115200 бод и 150 миллисекунд c циклы сообщения Prom. до сих пор не удалось показать менее 1se c, так что InfluxDB сделал это красиво, вот несколько картинок: ниже - 30se c окно Prom. на 115200 бод

и около 10 секунд на том же 115200 бод в InfluxDB enter image description here

1 Ответ

0 голосов
/ 26 марта 2020

Хотя вы можете установить интервалы очистки менее секунды, Prometheus не предназначен для этого, так как это сложный мониторинг в реальном времени в этот момент, и, например, планировщик ядра может заставить Prometheus ненадолго прекратить работу и пропустить некоторые скрепы, которые не было бы проблем с более типичными интервалами очистки.

Я бы посоветовал взглянуть на нестандартное решение, если вам нужно такое высокое разрешение.

...