Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring - get long Process execution logs and status? / 21 сообщений из 21, страница 1 из 1
16.08.2018, 16:28
    #39688980
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
Здравствуйте,

подскажите, как лучше и с помощью чего сделать следующее..
И вообще возможно ли, я думаю что да... Но как-то не слишком много опыта в обработке процессов...

Есть SpringBoot Web приложение. По REST Запускается процесс который может исполняться и 10 минут и час. Хочется в любой момент придти по определённому пути и получить актуальную информацию по всех запущенных процессах.

К примеру я запускаю вот так вот процесс

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public String submit(String runCmd) throws IOException, InterruptedException {

        String processResult = "";

        ProcessBuilder builder = new ProcessBuilder();
        builder.command("sh", "-c", runCmd);
        builder.directory(new File(System.getProperty("user.home")));
        Process process = builder.start();
        StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(), System.out::println);
        Executors.newSingleThreadExecutor().submit(streamGobbler);
        int exitCode = process.waitFor();
        assert exitCode == 0;

        return processResult;
    }

    private static class StreamGobbler implements Runnable {
        private InputStream inputStream;
        private Consumer<String> consumer;

        public StreamGobbler(InputStream inputStream, Consumer<String> consumer) {
            this.inputStream = inputStream;
            this.consumer = consumer;
        }

        @Override
        public void run() {
            new BufferedReader(new InputStreamReader(inputStream)).lines().forEach(s -> {
                   System.out.println(s);
            });
        }
    }



Предположим что процесс работает 10 минут и каждые 10 секунд пишет что-то в консоль.
Хотелось бы вот каждый 10 секунд получать изменения...

Я конечно же могу это скомпоновать всё и сделать, но может есть какие-то схожие решения, библиотеки для таких вещей?

Буду благодарен за любую подсказку или совет...
...
Рейтинг: 0 / 0
16.08.2018, 16:48
    #39688994
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_,

ну дак используй websocket - отправляй когда угодно из какого угодно места и что угодно
...
Рейтинг: 0 / 0
16.08.2018, 16:52
    #39688998
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_,
Ты в логи не можешь вывести число каждые 10мин?
...
Рейтинг: 0 / 0
17.08.2018, 08:08
    #39689211
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
вадя_webdev_,

ну дак используй websocket - отправляй когда угодно из какого угодно места и что угодно
- Насколько я понимаю, это то что мне надо. Или?
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html
...
Рейтинг: 0 / 0
17.08.2018, 08:08
    #39689212
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
Petro123_webdev_,
Ты в логи не можешь вывести число каждые 10мин?
))) Нет, это был пример, что я хочу сделать
...
Рейтинг: 0 / 0
17.08.2018, 08:09
    #39689213
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
Тоесть приблизительный workflow.
...
Рейтинг: 0 / 0
17.08.2018, 08:35
    #39689219
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_Хочется в любой момент придти по определённому пути и получить актуальную информацию по всех запущенных процессах.
Вот это переведи и распиши на 3 абзаца.
Можно с картинками.
...
Рейтинг: 0 / 0
17.08.2018, 08:43
    #39689222
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_- Насколько я понимаю, это то что мне надо. Или?как вариант - использовать библиотеку из
https://suefk.roskazna.ru:8443/docs/web-socket-howto.html

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket
...
Рейтинг: 0 / 0
17.08.2018, 08:50
    #39689228
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
Petro123Вот это переведи и распиши на 3 абзаца.
Можно с картинками.

- Есть spring-boot web приложение.
- Приложение работает в докер контейнере
- /submit - приложение запускает из shell скрипт который будет исполняться минут 10 или 100
- shell script запустился - вернул нам PID процесса.
- запрос закончен, PID сохранили в БД
- Через минут 5 я хочу посмотреть состояние процесса, хочу прочитать то что он написал в логи
- /getAllRunningProcesses - получаю все запущенные процессы клиента (PIDs)
- выбираю PID и через REST Хочу подконнектится к процессу и читать в реальном времени всё то что он пишет в лог
- своеобразный netcat или LogsViewer только для процесса
- подконнектится к процессу через REST и слушать его

Через веб-сокеты я когда-то делал LogsViewer.

Вопрос:
Кто-то такое что-то похожее делал? Может есть какие-то готовые библиотеки для такого?
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html - это то, что мне нужно?
...
Рейтинг: 0 / 0
17.08.2018, 09:00
    #39689238
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_,
такое можно и простым ajax сделать

websocket - если есть желание отслеживать изменения в реальном времени.
тогда любое изменение может отображаться у клиента.
...
Рейтинг: 0 / 0
17.08.2018, 09:03
    #39689239
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
вадяwebsocket - если есть желание отслеживать изменения в реальном времени.
тогда любое изменение может отображаться у клиента. - Да, знаю, так как делал.
Просто одно дело, когда что-то делаешь на сервере, а другое, когда отслеживаешь системные(запущенные) процессы.
...
Рейтинг: 0 / 0
17.08.2018, 09:26
    #39689252
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_Просто одно дело, когда что-то делаешь на сервере, а другое, когда отслеживаешь системные(запущенные) процессы.приложение работает на сервере, и кто ему мешает отслеживать все на сервере и передавать клиенту?
...
Рейтинг: 0 / 0
19.08.2018, 09:14
    #39689888
unregestered
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_,

Чо-то сложно как-то. Запускайте процесс прямо из джавы через ProcessBuilder
...
Рейтинг: 0 / 0
19.08.2018, 09:17
    #39689890
unregestered
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
unregestered_webdev_,
Чо-то сложно как-то. Запускайте процесс прямо из джавы через ProcessBuilder
Чо-то я похоже не разобрался в сущности проблемы.
...
Рейтинг: 0 / 0
19.08.2018, 10:33
    #39689897
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_выбираю PID и через REST Хочу подконнектится к процессу и читать в реальном времени всё то что он пишет в лог
Если 5 процессов пишут в лог, то можно без подключения к процессам просто смотреть лог в реальном времени.
Нужно чтобы в лог писали без буферизации.
Зачем вам pid тогда, непонятно.
...
Рейтинг: 0 / 0
20.08.2018, 07:02
    #39690144
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_,


Можно посмотреть в сторону Actuator.
Написать свой актуатор, который будет выводит нужные вам данные. :-)
...
Рейтинг: 0 / 0
20.08.2018, 08:48
    #39690175
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
unregestered_webdev_,

Чо-то сложно как-то. Запускайте процесс прямо из джавы через ProcessBuilder - Сложного нет ничего. Просто хотелось поинтересоваться о библиотетеке, которая на вебсокетах работает и нет ли каких-то подводных камней - перед началом имплементации.
...
Рейтинг: 0 / 0
20.08.2018, 08:51
    #39690176
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
Petro123_webdev_выбираю PID и через REST Хочу подконнектится к процессу и читать в реальном времени всё то что он пишет в лог
Если 5 процессов пишут в лог, то можно без подключения к процессам просто смотреть лог в реальном времени.
Нужно чтобы в лог писали без буферизации.
Зачем вам pid тогда, непонятно. - Каждый процесс запускается сам по себе, Важно различать их, а не смотреть общий лог.
Ну так, а как я буду знать какому пользователю принадлежит процесс без PID? Полозователь запускает процесс, я получаю пид созданного процесса. Отключаюсь (запрос завержился). Через 5 мин Хочу узнать статус и почитать логи. Как мне это сделать без PID?
...
Рейтинг: 0 / 0
20.08.2018, 08:52
    #39690177
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
mad_nazgul_webdev_,


Можно посмотреть в сторону Actuator.
Написать свой актуатор, который будет выводит нужные вам данные. :-) - Неплохая идея, спасибо!
...
Рейтинг: 0 / 0
20.08.2018, 09:24
    #39690203
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
_webdev_Petro123пропущено...

Если 5 процессов пишут в лог, то можно без подключения к процессам просто смотреть лог в реальном времени.
Нужно чтобы в лог писали без буферизации.
Зачем вам pid тогда, непонятно. - Каждый процесс запускается сам по себе, Важно различать их, а не смотреть общий лог.
Ну так, а как я буду знать какому пользователю принадлежит процесс без PID? Полозователь запускает процесс, я получаю пид созданного процесса. Отключаюсь (запрос завержился). Через 5 мин Хочу узнать статус и почитать логи. Как мне это сделать без PID?
Ну, может тебе и не подходит, но у меня так.
Есть soap server.
Там на каждое подключение свой экземпляр класса.
В логах:
[id user] [id thread] [context http get] время и само сообщение в лог
...
Рейтинг: 0 / 0
20.08.2018, 09:39
    #39690221
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring - get long Process execution logs and status?
Petro123_webdev_пропущено...
- Каждый процесс запускается сам по себе, Важно различать их, а не смотреть общий лог.
Ну так, а как я буду знать какому пользователю принадлежит процесс без PID? Полозователь запускает процесс, я получаю пид созданного процесса. Отключаюсь (запрос завержился). Через 5 мин Хочу узнать статус и почитать логи. Как мне это сделать без PID?
Ну, может тебе и не подходит, но у меня так.
Есть soap server.
Там на каждое подключение свой экземпляр класса.
В логах:
[id user] [id thread] [context http get] время и само сообщение в лог
- понял.
Дело в том, что из программы я буду запускать spark-submit. Он создаёт драйвер и екзекюторы на кластере. Хотелось хотя бы минимальную информацию о запущенном процессе пользователю предоставлять. Думаю, что в моём случае пид лучше чем логи искать, так как их будет дофига. Пока что это всё немного в процессе активной разработки (kubernetes and spark-submit), и простых инструментов для такого отслеживания я не нашёл. Но это уже другой вопрос.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring - get long Process execution logs and status? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]