fps Posted March 5, 2021 Posted March 5, 2021 Как получить лог через REST API? Пробовал по аналогии с CLI запросы get /rci/show/log /rci/show/log/once /rci/show/log/10 /rci/show/log/10/once - отвечает 404 Not Found Quote
1 eralde Posted March 5, 2021 Posted March 5, 2021 В 05.03.2021 в 18:39, fps сказал: Как получить лог через REST API? Пробовал по аналогии с CLI запросы get /rci/show/log /rci/show/log/once /rci/show/log/10 /rci/show/log/10/once - отвечает 404 Not Found GET-запрос не работает потому что это т.н. "background process" и он еще не запущен. См. B.1.2.3 Background processes в Command Reference Guide: Чтобы получить лог необходимо: отправить POST-запрос к rci/show/log с аргументами команды в JSON в качестве данных (без аргументов -- "{}"; другой пример "{"max-lines": 100}"). Этот запрос вернет весь текущий лог. далее отправлять GET-запросы к rci/show/log (будет приходить объект вида {continued: true, <новые сообщения, если они появились с момента последнего опроса>} в момент, когда вы хотите прекратить получение сообщений из лога -- отправить запрос с методом DELETE 1 Quote
1 eralde Posted March 6, 2021 Posted March 6, 2021 8 минут назад, fps сказал: Если отправить POST-запрос с пустым JSON-объектом "{}" многократно без команд DELETE, то еще один background process будет запускаться каждый раз и устройству рано или поздно поплохеет? Или это нормальная практика? Нужно провести эксперимент. Особенность лога в том, что он продолжает присылать признак "continued" бесконечно, в отличие от других подобных процессов.("show site-survey", "components commit", ...). Отсутствие признака "continued" в ответе на GET-запрос (или на исходных POST-запрос), значит, что процесс в системе завершен (и последующие GET-запросы снова будут возвращать 404). Я не знаю случаев когда устройству плохело бы из-за запросов лога, но я запустить много копий получения лога не пробовал. 14 минуты назад, fps сказал: Если отправить POST-запрос с пустым JSON-объектом "{}" однократно, то потом до перезагрузки устройства можно слать GET? Или background process через какое-то время завершится? В случае с логом получение новых событий через GET-запрос после запуска должно работать пока не протухнет сессия авторизации (она протухает через 10 минут отсутствия активности). 16 минут назад, fps сказал: Какой правильный способ получить последние 100 строк лога безотносительно предыдущих действий? По аналогии с cli командой "show log 100 once" Гм, похоже, что достаточно отправить POST-запрос к rci/show/log с такими данными: { "once": true, "max-lines": 100 } Этот запрос вернет 100 последних сообщений и при этом фоновый процесс не остается висеть после ответа. Надеюсь, что это подойдет) 1 Quote
1 eralde Posted March 6, 2021 Posted March 6, 2021 41 минуту назад, fps сказал: Больше никакие параметры не поддерживаются? Запросить только ошибки {"once": true, "max-lines": 100, "level": "Error"} не получится, только фильтровать на стороне клиента? Запросить только ошибки, к сожалению, нельзя. Параметры в REST API повторяют аргументы команды в CLI: (config)> show log Usage template: log [{max-lines}] [once] 1 Quote
0 fps Posted March 6, 2021 Author Posted March 6, 2021 (edited) Спасибо. Так работает. Если отправить POST-запрос с пустым JSON-объектом "{}" многократно без команд DELETE, то еще один background process будет запускаться каждый раз и устройству рано или поздно поплохеет? Или это нормальная практика? Если отправить POST-запрос с пустым JSON-объектом "{}" однократно, то потом до перезагрузки устройства можно слать GET? Или background process через какое-то время завершится? Какой правильный способ получить последние 100 строк лога безотносительно предыдущих действий? По аналогии с cli командой "show log 100 once" Edited March 6, 2021 by fps Quote
0 fps Posted March 6, 2021 Author Posted March 6, 2021 Это именно то, что искал: POST /rci/show/log {"once": true, "max-lines": 100} Спасибо. Вопрос исчерпан. Quote
0 fps Posted March 6, 2021 Author Posted March 6, 2021 Больше никакие параметры не поддерживаются? Запросить только ошибки {"once": true, "max-lines": 100, "level": "Error"} не получится, только фильтровать на стороне клиента? Quote
Question
fps
Как получить лог через REST API?
Пробовал по аналогии с CLI запросы get /rci/show/log /rci/show/log/once /rci/show/log/10 /rci/show/log/10/once - отвечает 404 Not Found
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.