
Установка ntail для просмотра log-ов
ntail — это аналог утилиты tail для просмотра log файлов который поддерживает фильтрацию и парсинг. Данная утилита имеет подсвечивание для различных ошибок от ответа веб-сервера. В своей статье «Установка ntail для просмотра log-ов» я расскажу как установить и использовать ntail для просмотра log-ов.
Для начала, нужно установить вспомогательные пакеты.
Для CentOS/Fedora/RedHat:
# yum install ruby rubygems -y
Для Debian/Ubuntu:
# apt-get install ruby-full rubygems
Для MacOS:
Дополнительных пакетов устанавливать не нужно. Просто нужно выполнить установку ntail.
Для всех остальных, можно скачать через GIT:
# cd /usr/local/src && wget https://github.com/pvdb/ntail.git
Установка ntail для просмотра log-ов
И собственно после установления пакетов с ruby, выполняем установку ntail:
# gem install ntail
После этого вы должны иметь исполняемый файл в /usr/bin/ntail или /usr/local/bin/ntail. Для правильной работы ntail необходимо убедиться что установлен относительный путь к утилите в переменной окружения $ PATH.
Использование ntail для просмотра log-ов в Unix/Linux
Сейчас, я расскажу как можно использовать ntail в ОС Unix/Linux.
Основы использования Ntail
Обработать весь log-файл веб-сервера nginx и вывести разобранную и отформатированную строку в STDOUT:
# ntail /var/log/nginx/access.log
Обработать весь log-файл веб-сервера nginx и передать через пайп (трубу) розпарсенную и отформатированную строку в браузере (в зависимости от дополнительного bcat gem):
# ntail /var/log/nginx/access.log | bcat
Запустить tail и отображать лог-файл на экран в режиме реального времени передаваемый через пайп ntal-у и выводит (для остановки используйте комбинацию клавиш ctrl + C):
# tail -f /var/log/nginx/access.linux-notes.org.log | ntail
Запустить tail и отображать лог-файл на экран в режиме реального времени передаваемый через пайп ntal-у розпарсенную и отформатированную строку в браузере (для остановки используйте комбинацию клавиш ctrl + C):
# tail -f /var/log/nginx/access.linux-notes.org.log | ntail | bcat
Расширенный Примеры
Считать из стандартного ввода информацию и вывести каждую строку на STDOUT ( остановка ^D):
$ ntail
Считать из стандартного ввода информацию и вывести длину каждой строки (для иллюстрации служит опция «-e»):
$ ntail -e 'puts size'
Считать из стандартного ввода информацию и вывести только не пустые строки (для иллюстрации служит опция «-f»):
$ ntail -f 'size != 0'
Следующие вызовы команд работают так же (чтобы проиллюстрировать нужны опции «-e» и «-f»):
$ ntail $ ntail -f 'true' -e 'puts self'
Вывести все HTTP запросы, которые приходят из конкретного IP-адреса:
$ ntail -f 'remote_address == "66.66.66.66"' /var/log/nginx/access.linux-notes.org.log
Найти все HTTP запросы, которые вызвали ошибки в «5xx» Ошибка HTTP/код состояния (например, Rails 500 errors):
$ gunzip -S .gz -c access.log-20150804.gz | ntail -f 'server_error_status?'
Генерировать сводный отчет кодов состояния HTTP для всех не-HTTP запросов с кодом 200 (ОК):
$ ntail -f 'status != "200"' -e 'puts status' access.linux-notes.org.log | sort | uniq -c
Показать местоположение для каждого запроса HTTP с использованием GeoIP (зависит от дополнительного Geoip gem)
$ ntail -e 'puts [to_country_s, to_city_s].join("\t")' /var/log/nginx/access.linux-notes.org.log
PS: для использования geoIP, необходимо установить его.
# gem install geoip geoip-c
Вывести список IP-адресов с именами хостов для каждого запроса HTTP (замедляет из-за вызова NSlookup):
$ ntail -e 'puts [remote_address, to_host_s].join("\t")' /var/log/nginx/access.linux-notes.org.log
Разобрать лог-файл через визуализатора gltail в реальном времени:
$ ntail -v --raw --sleep 0.1 /var/log/nginx/access.linux-notes.org.log > parsed-access.linux-notes.org.log
Вот и все. Данная утилита очень мне понравилась и я советую ее использовать. Данная тема «Установка ntail для просмотра log-ов» завершена.