- PVSM.RU - https://www.pvsm.ru -
Наверное, каждый, кому когда-нибудь приходилось следить одновременно за большим количеством окошек с логами, подумывал о переносе некоторых из них на экран планшета или телефона.
А, находясь далеко от компьютера, следить за выхлопом недавно запущенного большого и страшного сервиса?
Конечно, можно поставить ssh клиент на телефон, но это не особо удобно.
Поэтому я решил сделать мини-сервис упрощающий «удалённый» просмотр логов.
Сервис cantail.me [3] с открытым исходным кодом, выложенным на github [4].
Свободный консольный клиент (github [5]). Для простой отправки данных достаточно:
long-runnig-app | tailme
И скопировать ссылку из открывшегося окна браузера. Или можно добавить параметр -s и просто скопировать её из терминала.
Для примера сейчас запущена публикация лога nginx'а [6] командной:
tail -f /var/log/nginx/cantailme.access.log | tailme -s
В ubuntu 11.10+ приложение можно установить из ppa [7]:
add-apt-repository ppa:nvbn-rm/ppa
apt-get update
apt-get install tailme
В других дистрибутивах можно установить через pip:
pip install -e git+https://github.com/nvbn/cantailme-client.git#egg=tailme
Либо через установочный скрипт:
git clone https://github.com/nvbn/cantailme-client.git
cd cantailme-client
python setup.py install
Реализация клиента очень простая — цикл читающий stdin и отправляющий на сервер новые строчки.
Для предотвращения подмены данных сервер при инициализации сессии отдаёт хеш-идентификатор и «секрет», которые в дальнейшем используются для отправки «строк».
Серверная часть немного сложнее, её можно разделить на 3 условных сущности:
Взаимодействие между частями системы проходит при помощи RabbitMQ.
Push работает через tornado-sockjs [8].
Для экономии ресурсов логи загружаются сразу в файл и отдаются через nginx, минуя django.
Для желающих залить /dev/urandom или большие логи раз в 5 минут запускается «суровый» скриптик [9].
В данном случае он нетривиален, но я уже сталкивался с похожей ситуацией [10]. Основные причины выбора такой схемы:
В случае возникновения ошибок пишиет багрепорты в трекере для сервера [11] и клиента [11]. Либо в комментариях к этому посту =)
PS с habrastorage произошёл какой-то косяк, перезалил картинки к себе.
Автор: nvbn
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/11232
Ссылки в тексте:
[1] Image: http://cantail.me/media/pub/bigm.png
[2] Image: http://cantail.me/media/pub/bigt.jpeg
[3] cantail.me: http://cantail.me/
[4] github: https://github.com/nvbn/cantailme-server
[5] github: https://github.com/nvbn/cantailme-client
[6] публикация лога nginx'а: http://cantail.me/tail/e794a80e/
[7] ppa: https://launchpad.net/~nvbn-rm/+archive/ppa
[8] tornado-sockjs: https://github.com/MrJoes/sockjs-tornado/
[9] «суровый» скриптик: https://github.com/nvbn/cantailme-server/blob/master/app/management/commands/kill_fat.py
[10] похожей ситуацией: http://habrahabr.ru/post/135650/
[11] сервера: https://github.com/nvbn/cantailme-server/issues
Нажмите здесь для печати.