Невероятно странно, но попытки нагуглить хоть какой-нибудь веб-интерфейс для сислога приводят в основном в дебри топов коммерческих интерфейсов, среди которых, может, и есть бесплатные версии, но будьте любезны сами ковыряться и разбираться насколько оно убого или нет, и какой функционал там порезан.
Мне же от вебморды много не надо — мне надо чтобы она лог показывала, фильтры имела, и было бы неплохо чтобы составляла с сервером полностью FOSS-решение. И сам я давно уже использую под это дело LogAnalyzer, который с поставленной задачей — презентовать лог сислог-сервера, собирающего в базу данных логи с различного оборудования — справляется весьма неплохо.
И так как в целом задача развертывания сислог-сервера с веб-мордой не решается автоматически установкой какого-нибудь пакета в этом нашем дебиане, я решил во-первых написать скрипт, который сделает все за вас, ну а попутно еще расписать как в целом все это инсталлируется и настраивается руками.
Итак, скрипт писался и проверялся на Debian 10 «Buster», его актуальная версия находится на гитхабе, а текущую я оставлю здесь:
Лучше всего использовать его на свежеустановленном дебиане в минимальной конфигурации. Перед запуском нужно его отредактировать, изменив пароль для создаваемого в процессе пользователя (базы данных) rsyslog, а также логин и пароль дополнительного администратора БД, который будет создан в случае установки (опциональной) PhpMyAdmin. Всего скрипт установит:
- mariadb в качестве сервера баз данных,
- rsyslog с коннектором rsyslog-mysql в качестве сислог сервера, и создаст конфиг для приема логов по сети
- веб-сервер apache
- опционально phpmyadmin для управления базой данных
- LogAnalyzer.
После завершения работы скрипта останется пройти мастера настройки LogAnalyzer, перейдя в браузере по адресу вашего сервера. Так что если вы решите его использовать, то можете листать к разделу «Настройка LogAnalyzer», а также посмотреть наглядное видео:
Настройка сервера syslog с веб-интерфейсом и хранением логов в базе данных (на Debian 10 «buster»)
Установка debian
Для наших целей подойдет установленный в минимальной конфигурации дебиан. Идеально сразу при установке поставить LAMP-набор, отметив опцию web server
Но можно обойтись пунктом standard system utilities, а все остальное установить самостоятельно. Я буду исходить из этого варианта.
Установка базы данных MariaDB
- apt update && apt -y install mariadb-server
Установка веб-сервера apache
- apt -y install apache2
Установка необходимых модулей PHP
- apt -y install php libapache2-mod-php php-mysql php-common php-cli php-json php-gd php-opcache php-readline php-mbstring
Установка rsyslog
- apt -y rsyslog-mysql
В процессе установки соглашаемся сконфигурировать базу данных
Придумываем и подтверждаем пароль для пользователя «rsyslog» БД
После того как сислог будет установлен, его нужно сконфигурировать так, чтобы он мог принимать события с сетевого оборудования. Создаем файл /etc/rsyslog.d/enable-remote.conf с таким содержанием:
- module(load="imudp")
- input(type="imudp" port="514")
- module(load="imtcp")
- input(type="imtcp" port="514")
И перезагружаем сервис
- service rsyslog restart
Установка веб-интерфейса (LogAnalyzer)
Скачиваем и распаковываем файлы в директорию веб-сервера:
- wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.7.tar.gz
- tar -xvf loganalyzer-4.1.7.tar.gz
- rm loganalyzer-4.1.7.tar.gz
- cp -r loganalyzer-4.1.7/src/* /var/www/html/
- rm /var/www/html/index.html
- chown www-data:www-data -R /var/www/html/
Перед тем как перейти мастеру настройки, создадим еще одну одну базу, в которой лог аналайзер будет хранить свои настройки, и дадим пользователю rsyslog полные права на нее
- mysql -uroot -e "create database loganalyzer; grant all privileges on loganalyzer.* to rsyslog@localhost"
Настройка LogAnalyzer
Теперь к мастеру. Перейдя в браузере по адресу сервера мы должны увидеть его приглашение создать конфиг
Первые два шага пропускаем, интересное начинается с третьего. Здесь нужно выбрать Enable User Database и ввести имя пользователя (rsyslog) и пароль с которыми будет производиться подключение к созданной нами базе «loganalyzer». Остальные настройки можно оставить по умолчанию.
На шестом шаге создаем внутреннего администратора лог аналайзера
На следующем шаге выбираем источник данных — базу rsyslog\’а. Важные пункты, которые будет нужно здесь изменить:
- Source Type — MYSQL Native
- Database Name — Syslog (была создана при установке rsyslog-mysql)
- Database Tablename — SystemEvents (именно так — с большими буквами, а не как по дефолту)
- Database User — rsyslog
- Database Password — пароль юзера rsyslog
- Enable Row Counting — No (при объеме логов в несколько гигабайт этот подсчет приводит к более чем минутным запросам к БД)
Next, Finish и перед нами интерфейс лог аналайзера
Тюнинг
Теперь остается сделать две довольно важные вещи.
Во-первых, при попытке логина в админку, лог аналайзер пытается проверить свое собственное обновление, и это приводит к длительному ожиданию, если сервер не имеет выхода в интернет. Чтобы этого не происходило — нужно отредактировать файл /var/www/html/include/functions_common.php, изменив строку
- $content['UPDATEURL'] = "http://loganalyzer.adiscon.com/files/version.txt";
на
- $content['UPDATEURL'] = "";
Второе, и не менее важное. Со временем база сислога будет опухать, поэтому ее стоит периодически очищать от старых записей. Для этого нужно создать файлик /etc/cron.d/rsyslog_mysql с содержимым
- 23 2 * * * root mysql -uroot -e 'use Syslog; DELETE FROM SystemEvents WHERE ReceivedAt < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 365 DAY);'
С ним каждый день из базы будут удаляться записи старше 365 дней (разумеется это количество можно поправить на необходимое)