Установка Logstalgia для просмотра access log в режиме реального времени

Установка Logstalgia для просмотра access log в режиме реального времени

Logstalgia (ранее ApachePong) является инструмент, который поможет вам визуализировать access логи в крутом виде. В основном эта утилита читает access_log и генерирует графический pong-like (это как игра пинг-понг) между веб-сервером Nginx, Apache или Lighttpd и  запросов HTTP от ваших клиентов. В своей теме «Установка Logstalgia для просмотра access log в режиме реального времени» я расскажу как установить и использовать  Logstalgia на Unix/Linux, а в качестве примеров возьму Debian 8, CentOS6/7 и macOS.

Требования для logstalgia

  • Работающий  веб сервер должен быть уже установлен;
  • Unix/Linux ОС (Fedora, Ubuntu, MacOS, Debian, CentOS);
  • Сервер должен иметь поддержку видео с  OpenGL.

Установка Logstalgia для просмотра access log в режиме реального времени

Для Fedora/CentOS

Установим все дополнительный компоненты:

# yum install ftgl-devel pcre-devel libpng-devel libjpeg-devel gcc-c++ make gcc glew glew-devel

ВНИМАНИЕ!

Так же стоит установить:

# yum install boost boost-devel SDL-devel SDL_image-devel

Но нужно ставить самые новые версии. Прочитайте полностью статью перед выполнением чего-либо.

Скачиваем исходный код с Logstalgia, распаковываем его, после чего переходим в папку с исходниками и приступаем к сборке:

# cd /usr/local/src && wget https://github.com/acaudwell/Logstalgia/releases/download/logstalgia-1.0.5/logstalgia-1.0.5.tar.gz && tar -xvpzf logstalgia-1.0.5.tar.gz  && cd logstalgia-1.0.5

Конфигурим Logstalgia:

# ./configure --prefix=/usr/local

Выполняем установку программы:

# make && make install

В ходе конфигурирования, я получил следующую ошибку:

checking for boostlib >= 1.46... configure: We could not detect the boost libraries (version 1.46 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
configure: error: Boost Base >= 1.46 is required. Please see INSTALL

Решение стало удаление старого пакета boost и установкой нового ( с исходного кода, т.к нет поддержки данного пакета из rpm):

# yum remove boost-devel

Скачиваем дополнительный пакет:

# cd /usr/local/src && wget http://ufpr.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.gz && tar -xvpzf boost_1_58_0.tar.gz && cd boost_*

Выполняем установку:

# ./bootstrap.sh --prefix=/usr/local && ./bjam install --with=all

Если не будет работать, то попробуйте использовать:

# ./bootstrap.sh --prefix=$CMAKE_PREFIX_PATH --libdir=$CMAKE_PREFIX_PATH/lib

# ./bjam --layout=system install

# export Boost_LIBRARYDIR=$CMAKE_PREFIX_PATH/include/boost/

PS: Можно установить и из репозитория, НО ДЛЯ CENTOS6 x64:

# cd /usr/local/src && wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo
# yum install boost-devel

ВНИМАНИЕ! Нужна версия от boost 1.46 и выше.

Получил еще одну ошибку:

configure: error: GLM headers are required. Please see INSTALL

Фиксим:

# rpm -qa |grep -i sdl

и

# yum remove SDL SDL_image

И устанавливаем новые библиотеки SDL2:

# cd /usr/local/src && wget https://www.libsdl.org/release/SDL2-2.0.3.tar.gz && tar -xvpzf SDL2-2.0.3.tar.gz && cd SDL2-*

Конфигурим и выполняем установку:

# ./configure && make && make install

И устанавливаем новые библиотеки SDL2 image:

# cd /usr/local/src && wget https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.0.tar.gz && tar -xvpzf SDL2_image-2.0.0.tar.gz && cd SDL2_image-*

Конфигурим и выполняем установку:

# ./configure && make && make install

Если вы эти библиотеки установлены в нестандартных местах, вы можете то попробуйте добавить эти пути в конфигурационном скрипте, например:

# sh ./configure CPPFLAGS="-I/somewhere/include" LDFLAGS="-L/somewhere/lib"

Если это работает, вы можете добавить /somewhere/lib для вашего LD_LIBRARY_PATH так shared библиотека загружается и работает нормально.

PS: Можно использовать версию 1.2, но крайне не желательно:

Думал после таких долгих манифестов, я наконец-то соберу данный пакет, но не тут то было. Получил следующую ошибку:

configure: error: GLM headers are required. Please see INSTALL

Решением стали следующие действия:

# cd /usr/local/src && wget http://ufpr.dl.sourceforge.net/project/ogl-math/glm-0.9.6.3/glm-0.9.6.3.zip && unzip glm-0.9.6.3.zip && cd glm*

Копируем все содержание (все библиотеки):

# cp -r glm/ /usr/local/include/

Думал уже все, но нет, получил следующее предупреждение:

[...]
configure: WARNING: SDL 2.0 libraries not found. Trying SDL 1.2. Please note SDL 1.2 support is deprecated
checking for SDL... configure: error: Package requirements (sdl >= 1.2.10 SDL_image) were not met:

No package 'SDL_image' found
[...]

Исправляем:

# cd /usr/lib64/pkgconfig
# ln -s /usr/local/lib/pkgconfig/sdl2.pc
# ln -s /usr/local/lib/pkgconfig/SDL2_image.pc

После всех этих действий я нормально сконфигурировал Logstalgia и установил ее на CentOS 6/7.

Для Ubuntu/Debian

Установка Logstalgia для Debian’s операционных систем, очень простая, т.к имеется пакет для установки.

Для начала обновляем ОС:

# apt-get install

И устанавливаем:

# apt-get install logstalgia

Для macOS

Подключаем HOMEBREW (brew), после чего выполняем команду:

# brew install logstalgia

Использование/Тестирование Logstalgia

Единственное что вам нужно сделать, так это запустить logstalgia с access_log, например:

# logstalgia [options] /var/log/nginx/access_log

или

# logstalgia [options] /etc/nginx/logs/access_log

Все зависит от того, где у вас есть журналы доступа, расположенных.

Чтобы просмотреть лог-файл, используйте так же:

# tail -f /var/log/httpd/access.log | logstalgia -

или

# tail -f /var/log/apache2/access.log | logstalgia --sync

Чтобы увидеть все другие поддерживаемые параметры, выполните:

# logstalgia --help

Список команд представлен внизу статьи.

Так же, можно смотреть access.log с удаленного сервера:

# ssh your_user@HOST_or_IP tail -f /path_of_your/access.log | logstalgia --sync

Вы можете при необходимости сохранить вывод с logstalgia в виде видеофайла можно следующим образом:

# logstalgia -1280x720 --output-ppm-stream myvideo.ppm /var/log/apache/access.log

или

# ssh user_name@HOST_or_IP tail -f /var/log/access-linux-notes.org.log | logstalgia -1280x720 --output-ppm-stream --sync output.ppm

Наконец, вы должны преобразовать файл logstalgia c .ppm в .mp4 используя FFmpeg инструмент:

# ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i my_log_video.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 log_access_nginx.mp4

ВНИМАНИЕ! Вы можете сразу писать в *.mp4 файл:

# logstalgia -1280x720 --output-ppm-stream - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 logstalgia.mp4

Последний пример, занимает большое время для кодирования.

Горячие клавиши Logstalgia

Интерактивные команды с клавиатуры являются:

  • c : Выведет логотип Logstalgia.
  • n : Шагнуть вперед во времени к следующей записи в log-е.
  • + или : Настройка скорости моделирования.
  • < или > : Регулировка шкалы времени.
  • Esc : Выход из приложения.

Опции Logstalgia

-f
Полноэкранный режим.

-WxH
Установить размер окна. Если опция «-f» также установлена, то будет пытаться установить режим видео (video mod).

-b, —background FFFFFF
Задать цвет фона в шестнадцатеричной системе.

-x, —full-hostnames
Показать полный запрос IP/hostname.

-s, —simulation-speed
Скорость симуляции. По умолчанию 1 (1 секунда в секунду).

-p, —pitch-speed
Скорость передвежения шариков по экрану (по умолчанию 0,15).

-u, —update-rate
Суммарная страница скорости обновления. По умолчанию 5 (5 секунд).

-g name,(HOST|URI|CODE)=regex,percent[,colour]

Создает новую именованную группу для запросов в которой заданный атрибут (HOST|URI|CODE) соответствует регулярному выражению. Процент определяет вертикальную процент экрана для использования.

Цвет может быть, необязательным, он задается в шестнадцатеричном формате (например, FF0000 —  красный), которые будут применяться ко всем меткам.

Примеры:

-g "HTML,URI=html?$,30"
-g "Lan,HOST=^192,30"
-g "Success,CODE=^[23],30"

Если группы не указаны,  то группы по умолчанию являются  Images (файлы с изоброжениями), CSS (файлы .css), Scripts (файлы с .js) и Misc’ (разные запросы).

—paddle-mode MODE
Paddle mode (pid, vhost, single).

vhost — отдельный paddle для каждого виртуального хоста в лог-файле.

pid — отдельный paddle для каждого process id в лог-файле.

single — single paddle (по умолчанию).

—paddle-position POSITION
Paddle позиции в качестве доли вида ширины (0,25 — 0,75).

—sync
Чтение из стандартного ввода (STDIN), игнорируя записи до текущего времени.

—from, —to ‘YYYY-MM-DD hh:mm:ss +tz’
Показать записи за определенный период времени.

Если часовой пояс не указан, то используется локальный часовой пояс.

Пример:

"2015-05-25"
"2015-05-25 11:00"
"2015-05-25 11:00:00 +12"

—start-position POSITION
Запустите в какой-то позиции в  лог-файле (между 0,0 и 1,0).

—stop-position POSITION
Остановите в какой-то позиции.

—no-bounce
Нет bouncing.

—hide-response-code
Скрыть response code.

—hide-paddle
Скрыть paddle.

—hide-paddle-tokens
Скрыть paddle токены показанные в режимах multi-paddle.

—hide-url-prefix
Скрыть  префикс протокола URL и имя хоста для запросов.

—disable-auto-skip
Отключить автоматический пропуск пустых периодов времени.

—disable-progress
Отключить индикатор.

—disable-glow
Отключить эффект свечения.

—font-size SIZE
Размер шрифта (10 — 40).

—glow-duration
Продолжительность свечения (от 0,0 до 1,0).

—glow-multiplier
Отрегулировать количество свечения.

—glow-intensity
Интенсивность свечения.

-o, —output-ppm-stream FILE
Запись фреймов как файл PPM на выходе (для STDOUT).

-r, —output-framerate FPS
Частота кадров выхода (используется с —output-ppm-stream).

—load-config CONFIG_FILE
Загрузите конфигурационный файл.

—save-config CONFIG_FILE
Сохранить конфигурационный файл с текущими настройками.

logfile
Путь к лог-файлу доступа для чтения или «-«, если вы хотите поставить запись в лог файл с помощью стандартного ввода.

В завершение статьи, я выложу видосик который демонстрирует данную утилиту:

Статья «Установка Logstalgia для просмотра access log в режиме реального времени» завершена.

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.