Установка утилиты он-лайн просмотра лог файлов Log.io на Debian 7 "Wheezy"
Любому web-разработчику часто приходится смотреть логи своего приложения, и они очень часто жалуются, что неудобно это делать через ssh (интересно, почему бы?) и tailf. Наверное именно для них и был написано log.io.
Log.io - это утилита для просмотра логов в реальном времени в веб-браузере. Написана на node.js и socket.io.
Я, если честно, не люблю всякие новомодные написанные на новомодных языка (например, на node.js) приложения, но каких-то более толковых альтернатив log.io не нашёл.
Для начала нам нужно установить node.js и npm. В обычных репозиториях его нет, поэтому добавим wheezy backports:
root@test:~# echo "deb http://ftp.us.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list
root@test:~# apt-get update
root@test:~# apt-get install nodejs-legacy curl
root@test:~# curl https://npmjs.org/install.sh | sh
Теперь создадим пользователя для log.io:
root@test:~# useradd -m -s /bin/bash logio
Установим log.io через npm:
root@test:~# npm install -g log.io --user "logio"
Можете сходить попить чайку\кофейку так как процесс этот довольно продолжительный.
Сменим пользователя на недавно созданного logio:
root@test:~# su - logio
Теперь подредактируем конфигурационные файлы. Для начала стоит включить авторизацию и разрешить подключения к серверу только с localhost. Открываем ~/.log.io/web_server.conf
:
// Будем слушать только localhost
host: '127.0.0.1',
port: 28778, // По этому порту будет доступен log.io
// Раскоментируем удалив /* */
// и сменим на что-нибудь более безопасное
auth: {
user: "superuser",
pass: "superuser$trololo@superpassword!ololo"
},
Теперь добавим конфиги для наблюдения. Открываем ~/.log.io/harvester.conf
:
// Просто название
nodeName: "supertrololo_Logs",
logStreams: {
// Собственно пути к файлам с логами
Log: [
"/var/www/mysupersite.org/log/access.log"
],
error: [
"/var/www/mysupersite.org/log/error.log"
]
На данном этапе у нас уже должен быть рабочий log.io. Запустим от пользователя logio
собственно сам log.io:
logio@test:~# log.io-server &
logio@test:~# log.io-harvester &
Запустите браузер, и откройте http://ip-адрес:порт
и проверьте, что всё работает. Если работает, то можно продолжить.
Для удобства можно создать домен, и перенаправлять все запросы с этого домена на log.io. Вот, например, как у меня это сделано в nginx:
server {
listen 80;
server_name logio.the-bosha.ru www.logio.the-bosha.ru;
location / {
proxy_pass http://127.0.0.1:28778;
}
}
Убьём запущенные процессы log.io:
logio@test:~# pkill -f log.io
Всё, что нам осталось - это организовать нормальное управлением log.io через init систему, и запуск во время старта\перезагрузки системы. К сожалению, init скрипты написанные разрабочиком log.io, не работают, поэтому не желая разбираться в чужих - быстро написал свои. От root пользователя выполняем:
root@test:~# cd /etc/init.d/
root@test:~# wget https://the-bosha.ru/downloads/logio-server-init-script -O logio-server
root@test:~# wget https://the-bosha.ru/downloads/logio-harvester-init-script -O logio-harvester
root@test:~# chmod +x logio*
root@test:~# update-rc.d logio-server defaults
root@test:~# update-rc.d logio-harvester defaults
root@test:~# service logio-server
root@test:~# service logio-harvester
Если кого либо что-то смутит в этих init скриптах то знайте, они такие из-за непонятных особенностей nodejs и log.io. :)
Ссылки:
- Домашняя страница log.io - logio.org