Jump to content
  • 0

Как получить log через REST API?


fps
 Share

Question

Как получить лог через REST API?

Пробовал по аналогии с CLI запросы get /rci/show/log /rci/show/log/once /rci/show/log/10 /rci/show/log/10/once - отвечает 404 Not Found

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 1
В 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:
image.png


Чтобы получить лог необходимо:

  • отправить POST-запрос к rci/show/log с аргументами команды в JSON в качестве данных (без аргументов -- "{}"; другой пример "{"max-lines": 100}"). Этот запрос вернет весь текущий лог.
  • далее отправлять GET-запросы к rci/show/log (будет приходить объект вида {continued: true, <новые сообщения, если они появились с момента последнего опроса>}
  • в момент, когда вы хотите прекратить получение сообщений из лога -- отправить запрос с методом DELETE
  • Upvote 1
Link to comment
Share on other sites

  • 1
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 последних сообщений и при этом фоновый процесс не остается висеть после ответа. Надеюсь, что это подойдет)

  • Upvote 1
Link to comment
Share on other sites

  • 1
41 минуту назад, fps сказал:

Больше никакие параметры не поддерживаются? 

Запросить только ошибки {"once": true, "max-lines": 100, "level": "Error"} не получится, только фильтровать на стороне клиента? 

Запросить только ошибки, к сожалению, нельзя. Параметры в REST API повторяют аргументы команды в CLI:
 

(config)> show log

 Usage template:
              log [{max-lines}] [once]

 

  • Upvote 1
Link to comment
Share on other sites

  • 0

Спасибо. Так работает.

  • Если отправить POST-запрос с пустым JSON-объектом "{}" многократно без команд DELETE, то еще один background process будет запускаться каждый раз и устройству рано или поздно поплохеет? Или это нормальная практика?
  • Если отправить POST-запрос с пустым JSON-объектом "{}" однократно, то потом до перезагрузки устройства можно слать GET? Или background process через какое-то время завершится?
  • Какой правильный способ получить последние 100 строк лога безотносительно предыдущих действий? По аналогии с cli командой "show log 100 once"
Edited by fps
Link to comment
Share on other sites

  • 0

Больше никакие параметры не поддерживаются? 

Запросить только ошибки {"once": true, "max-lines": 100, "level": "Error"} не получится, только фильтровать на стороне клиента? 

Link to comment
Share on other sites

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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...