На этой странице представлено описание установки и настройки сервера для централизованного сбора логов с оборудования в локальной сети.
Rsyslog – это высокопроизводительный сервер логов на Linux с возможностью сохранять информацию в базу данных. Поставляется вместе с пакетами Ubuntu20. Официальный сайт.
Loganalyzer – это веб-интерфейс для доступа к базе данных логов от Rsyslog. Через него можно просматривать и анализировать сообщения логов. Официальный сайт.
Все это ПО распространяется бесплатно.
Логи поступают от различного сетевого оборудования внутри локальной сети.
От Интернета сеть отделена сетевым экраном и считается условно безопасной. Вопросы информационной безопасности в описании не рассматриваются, но обязательны.
Сервер установлен на ПК(не ВМ) со следующими параметрами:
Процессор: Intel Core I5-3450 3.1ГГцх4.
ОЗУ: 8Гб.
HDD: 2Tb.
Сетевая карта 1Гбит/сек.
Сервер подключен в сеть, ему раздается IP-адрес по DHCP с доступом к Интернету.
Установка ОС.
Скачиваем Ubuntu 20. Desktop image с графическим интерфейсом.
Создаем установочную флэшку и переносим скачанный образ на нее.
Создание происходит с помощью ПО Rufus. Выбираем флэшку, скачанный образ Ubuntu, нажимаем кнопку «Старт».
Возможно, появится сообщение о загрузке необходимых данных. Нажимаем ДА.
Режим записи – Записать в ISO-образ режиме. ОК.
Следует учитывать, что все данные на флэшке будут уничтожены. Подтверждаем это.
Через пару минут флэшка готова.
С использованием созданной флэшки устанавливаем операционную систему.
Загружаемся с установочной флэшки.
Выбираем – Try or Install Ubuntu.
Далее откроется мастер установки.
Выбраны следующие параметры:
Install Ubuntu – установить Ubuntu.
English – язык системы.
Keyboard layout – English – язык клавиатуры.
Normal installation – тип установки – нормальная.
Download updates while installing Ubuntu – загрузить обновления вовремя установки (если подключен Интернет).
Erase disk and install Ubuntu – стереть диск и установить Ubuntu (все данные с диска удаляются!).
Where are you – выбираем часовой пояс.
Who are you – имя ПК, логин, пароль.
После установки вытаскиваем из ПК флэшку и нажимаем кнопку «Ввод» на клавиатуре.
Система установлена. Вводим указанный ранее логин и пароль и попадаем на рабочий стол.
Компьютер подключен в сеть. IP-адрес присвоился по DHCP.
Запускаем терминал Ctrl+Alt+T.
Входим с правами root.
1 |
sudo su - root |
Вводим пароль админа. Ввод пароля не отображается.
Далее все действия в терминале выполняются с правами root!
В командах ниже это ни как не обозначено (например $ или sudo перед командой).
Настраиваем удаленный доступ к серверу.
Работы будут выполняться в локальной сети. Подключение будет происходить от ПК с Windows 10 к ПК с Ubuntu 20 по этому решено воспользоваться протоколом RDP.
Запускаем терминал.
Вводим команды.
1 |
apt install xrdp -y |
(-y = yes подтверждение установки)
Проверка статуса
1 |
systemctl status xrdp |
Подключаемся по RDP из Windows на IP-адрес ПК с Ubuntu.
Предварительно пользователь на Ubuntu должен выйти из системы, чтоб удаленный пользователь из Windows вошел.
Переходим на ПК с Windows.
Пуск >> Все программы >> Стандартные — Windows >> Подключение к удаленному рабочему столу.
Или через командную строку:
Win+R >> mstsc.
Вводим IP-адрес.
Вводим логин-пароль (без указания домена).
Попадаем на рабочий стол Ubuntu.
Если дополнительно появится окно аутентификации, то нужно ввести пароль и подтвердить 2 раза (или нажать отмену).
Существуют другие альтернативные варианты удаленного доступа, например с использованием AnyDesk и подобных программ.
AnyDesk скачивается через браузер с официального сайта и устанавливается через менеджер установок (Software install).
Перед дальнейшей установкой желательно выполнить обновление.
Обновляем систему.
1 |
apt-get update |
1 |
apt-get upgrade |
После второй команды начнется обновление всех установленных пакетов. Это может происходить продолжительное время.
Установка Rsyslog.
Для работы Rsyslog потребуются следующие компоненты:
Apache
PHP
MYSQL
Loganalyzer
Установка Apache2.
Устанавливаем apach2 и модуль работы с php.
1 |
apt-get install apache2 -y |
1 |
apt-get install libapache2-mod-php -y |
Включаем автозапуск.
1 |
systemctl enable apache2 |
Запускаем службу
1 |
systemctl start apache2 |
Проверяем статус
1 |
systemctl status apache2 |
Active (running) – значит работает.
Можно посмотреть страницу приветствия перейдя в браузере по адресу:
1 |
http://localhost |
Установка PHP.
Информация о пакете php.
1 |
apt show php |
(текущая версия 7.4)
Можно посмотреть какие есть модули.
1 |
apt-cache search php7.4 |
Установка.
1 |
apt-get install php7.4 |
Установка дополнительных модулей.
Для работы, ускорения и прочих особенностей выбраны сл. модули.
1 |
apt-get install php7.4-mysql |
(работа с bd mysql)
1 |
apt-get install php7.4-curl |
(библиотека для передачи через протоколы http https)
1 |
apt-get install php7.4-xml |
(взаимодействие с xml)
1 |
apt-get install php7.4-gd |
(работа с графикой, без этого модуля не отображаются диаграммы статистики)
Эти два модуля возможно уже присутствуют.
1 |
apt-get install php7.4-json |
(сериализация объектов в текст )
1 |
apt-get install php7.4-opcache |
(кэш кода php для ускорения обработки большого кол-ва запросов)
Проверка работы php.
В командной строке создаем файл info.php с помощью редактора vi.
1 |
vi /var/www/html/info.php |
Содержание файла
1 |
<?php phpinfo(); ?> |
Выходим из редактора vi — нажимаем кнопку Esc
Затем пишем в командной строке.
1 |
:wq |
(сохранить и закрыть)
Можно создать этот файлик вручную если не получается через редактор в терминале.
В браузере проверяем ссылку.
1 |
http://localhost/info.php |
Если видим эту страницу, значит все сделано правильно и php работает.
Установка MYSQL.
1 |
apt-get install mysql-server -y |
Модуль для Rsyslog
1 |
apt-get install rsyslog-mysql -y |
В появившемся сообщении нажимаем <No> создадим БД позже.
Добавление в автозагрузку и старт
1 |
systemctl enable mysql |
1 |
systemctl start mysql |
Проверка версии mysql
1 |
mysqld --version |
Результат.
1 |
/usr/sbin/mysqld Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu)) |
Проверка статуса mysql
1 |
systemctl status mysql.service |
Результат.
После всех установок нужно перезапустить веб-сервер
1 |
systemctl restart apache2 |
Установка RSYSLOG.
Проверяем какой Rsyslog уже есть в UBUNTU
1 |
apt list -a rsyslog |
Создадим базу данных для логов с названием rsyslog.
Заходим в mysql с правами root.
1 |
mysql -u root |
(пароля нет)
Далее создаем БД с названием rsyslog.
1 |
create database rsyslog; |
Создаем пользователя для доступа к базе данных.
Имя пользователя любое, например syslogmaster.
Пароль – password.
1 |
create user syslogmaster@localhost identified by 'password'; |
Назначаем привилегии.
1 |
grant all privileges on rsyslog.* to syslogmaster@localhost; |
Перечитываем конфигурацию.
1 |
flush privileges; |
Выходим.
1 |
exit; |
Импорт схемы для БД.
1 |
mysql -u syslogmaster -D rsyslog -p < /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql |
(-u -юзер, -D-бд, -p-пароль)
вводим пароль password
Если не выполнить эту настройку, то в БД не создадутся таблицы.
Можно посмотреть базу данных и пользователя соответствующими командами:
1 |
mysql -u root |
(вход в mysql)
1 |
select user from mysql.user; |
(список пользователей)
1 |
show databases; |
(список баз данных)
Содержание БД rsyslog.
Выбираем БД.
1 |
use rsyslog; |
Вводим команду чтоб показать таблицы.
1 |
show tables; |
1 |
exit; |
Изменим конфигурацию rsyslog в файле rsyslog.conf, чтоб он слушал UDP и TCP 514 порт.
Переходим в редактор vi. Выбираем файл.
1 |
vi /etc/rsyslog.conf |
Стрелками спускаемся до нужной строки и удаляем # (которая означает начало комментария).
Раcкомментируем строки как на картинке:
Выходим из редактора vi
Нажимаем Esc, затем:
1 |
:wq |
(сохранить и закрыть)
Настроим отправку логов в базу данных.
Отредактируем файл mysql.conf через редактор vi.
1 |
vi /etc/rsyslog.d/mysql.conf |
Изменим имя БД, пользователя и его пароль, см картинку.
Наводим на букву в строке, нажимаем i, редактируем, нажимаем Esc. Идем дальше…
Удаление пустых строк быстрое нажатие dd.
Если что-то неправильно введено, то нужно выйти без сохранения с помощью команды:
1 |
:q! |
Выходим из редактора vi
Esc
1 |
:wq |
(сохранить и закрыть)
Перезапускаем rsyslog
1 |
systemctl restart rsyslog |
Проверка статуса Rsyslog
1 |
systemctl status rsyslog |
Установка Loganalyzer.
Подготовка БД.
Создаем базу данных для Loganalyzer, так ее и назовем.
1 |
mysql -u root |
1 |
create database loganalyzer; |
(все буквы нижнего регистра)
База нужна в основном для пользователей.
Создаем пользователя для БД.
1 |
create user logan@localhost identified by 'password'; |
Назначаем привилегии.
1 |
grant all privileges on loganalyzer.* to logan@localhost; |
Перечитываем конфигурацию.
1 |
flush privileges; |
Выходим.
1 |
exit; |
Установка приложения Loganalyzer.
Скачиваем и устанавливаем.
Переходим во временную папку.
1 |
cd /tmp |
Скачиваем последнюю актуальную версию ПО.
1 |
wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz |
Распаковываем архив.
1 |
tar -xzvf loganalyzer-4.1.12.tar.gz |
Возврат в корень.
1 |
cd |
Создаем папку для Loganalyzer в apach2
1 |
mkdir /var/www/html/loganalyzer |
Копируем из временной папки в созданную
1 |
cp -r /tmp/loganalyzer-4.1.12/src/* /var/www/html/loganalyzer |
Создаем файл конфигурации.
Переходим в папку.
1 |
cd /var/www/html/loganalyzer |
Создаем пустой файл конфигурации.
1 |
touch config.php |
Меняем владельца.
1 |
chown www-data:www-data config.php |
(www-data:www-data это пользователь и группа которой мы даем права на файл config.php)
Задаем права на чтение и запись для config.php .
1 |
chmod 666 config.php |
Цифра 6 означает права на чтение и запись.
6 – для владельца.
6 – для группы.
6 – для пользователя.
Возвращаемся в корень.
1 |
cd |
Меняем владельца всех файлов в папке на www-data
1 |
chown www-data:www-data -R /var/www/html/loganalyzer/ |
(-R указывается чтоб применилось для всех вложенных объектов)
Теперь переходим в браузере по адресу
1 |
http://localhost/loganalyzer |
Видим страницу.
Если ничего не открылось нужно перезапустить все службы и попробовать еще раз (или перезагрузить ПК).
Проверить все статусы и файлы конфигурации, сверится с эталоном настроек из описания выше.
Нажимаем на ссылку Click here to Install Adiscon LogAnalyzer.
На первом шаге просто нажимаем Next.
Шаг 2 — проверка разрешения файла – перезаписываемый (Writeable).
Шаг 3 — вводим данные для БД. В данном случае это база loganalyzer.
Пользователь logan, пароль password (создан ранее). Нажимаем Next.
Может возникнуть ошибка при неправильном вводе логина-пароля. Вводим правильно.
Шаг 4 — нажимаем Next.
Шаг 5 — проверка SQL, нажимаем Next.
Шаг 6 — создание аккаунта администрирования. Пользователь может быть любой. Пароль придумываем. Нажимаем Next.
На следующем шаге 7 указываем источник логов – это база rsyslog. Вводим логин и пароль для этой базы.
Название таблицы — SystemEvents (с учетом регистра букв).
Настройка завершена.
Нажимаем кнопку Finish.
Проверяем.
Логи от разных устройств начали приходить. Они были предварительно настроены на IP-адрес этого сервера логов.
К веб-интерфейсу можно подключатся по IP-адресу с других компьютеров, например так:
1 |
http://192.168.5.120/loganalyzer/ |
Следует помнить про информационную безопасность и разрешить доступ к серверу логов только с доверенных адресов.
В процессе настроек могут появиться некоторые ошибки.
Решается эта проблема добавлением строчки в файле конфигурации
Открываем редактор vi в терминале
1 |
vi /etc/group |
Добавляем в самом низу строчку
1 |
adm:x:4:www-data |
Выходим с сохранением.
1 |
:wq |
Перезапускаем apach2.
1 |
systemctl restart apache2 |
Ошибка связана с несоответствующей базой данных указанной в шаге №7.
Переходим в Admin Center >> Sources и редактируем настройку БД.
Проверяем или изменяем параметры.
Если в процессе настроек страница зависла и потом открылось начало настроек. Клик на ссылку не реагирует.
Нужно удалить файл config.php и начать настройку заново.
/var/www/html/loganalyzer/config.php
Ошибка – белая страница после определенного шага.
Смотрим лог в apache2 /var/log/apache2/error.log
Часто такая ошибка связана с неправильной работой PHP. Возможна несовместимость версий Loganalyzer и php или mysql.
Проверяем версии, устанавливаем php другой версии. Выполняем настройку сначала.
С php8.1 на Ubuntu22, Loganalyzer 4.1.12 не работает.
Чтоб не получить краказябры, нужно указать кодировку utf8 в административном центре Loganalyzer.
Так же нужно проверить кодировку БД mysql. Она тоже должна быть utf8.
Проверка кодировки БД.
1 |
mysql -u root |
1 |
use rsyslog; |
1 |
show tables; |
Результат вывода таблиц.
1 2 |
SystemEvents SystemEventsProperties |
Просмотр.
1 |
show full columns from SystemEvents; |
Если не удобно работать с БД mysql через командную строку, то можно воспользоваться веб-интерфейсом phpMyAdmin.
Установка phpMyAdmin
1 |
apt-get install phpmyadmin -y |
Модуль для работы с utf8.
1 |
apt-get install php-mbstring -y |
Проверяем страницу входа.
1 |
http://localhost/phpmyadmin |
Удаление (при необходимости).
1 |
apt-get purge phpmyadmin -y |
Чтоб иметь доступ к всем БД проще создать нового пользователя и задать ему необходимые привилегии, чем пытаться настроить пользователя root.
Входим в mysql
1 |
mysql -u root |
Выбираем БД.
1 |
use phpmyadmin; |
Создаем пользователя для доступа к БД.
Имя пользователя любое, например phplocal.
Пароль – password.
1 |
create user phplocal@localhost identified by 'password'; |
(password — для примера, в реальности сложный пароль из букв разного регистра, цифр и спец.символов).
Назначаем привилегии root чтоб видеть все БД.
1 |
grant all privileges on *.* to 'phplocal'@'localhost' with grant option; |
Перечитываем конфигурацию.
1 |
flush privileges; |
Выходим.
1 |
exit; |
Заходим через любой браузер.
1 |
http://localhost/phpmyadmin |
Вводим параметры созданного ранее пользователя.
Видим все БД и можем с ними работать.
Отправка логов на сервер.
Чтоб логи приходили на сервер с различных сетевых устройств нужно на этих устройствах выполнить настройку. Для примера представлена краткая настройка некоторого оборудования. Принцип везде примерно одинаковый. Нужно указать IP-адрес сервера логов и порт на котором Rsyslog принимает сообщения.
Control Panel >> Notification >> Syslog.
Галочками можно указать какие типы событий отправлять на сервер логов.
Device можно изменить на Local 0.
Сохраняем настройку.
В зависимости от версии прошивки в NAS настройка может выполнятся из QuLog Center.
На вкладке журналов выбираем нужный тип логов.
Далее на поле где сообщения правой кнопкой мыши выбираем из меню настройку логов (Log Settings).
На вкладке внешнего логирования активируем галочкой отправку логов на Syslog-сервер и указываем его IP-адрес.
System >> Logging >> Actions
В правиле remote указываем IP-адрес сервера логов и порт с которым он работает
На вкладке Rules выбираем тип логов для отправки.
Самый простой и бесплатный способ – Event Log to Syslog. Приложение в виде службы отправляет логи по указанному IP-адресу.
Скачиваем архив последней версии для обычного размера пакетов, без LP.
Распаковываем в папку C:\Windows\System32
Запускаем через cmd с правами админа и с указанием IP-адреса сервера.
1 |
evtsys.exe -i -h 192.168.5.120 |
Запускаем службу.
1 |
net start evtsys |
Проверяем в службах режим запуска и состояние.
Подробную настройку для отправки конкретных типов логов, можно посмотреть в файле PDF который, находится в архиве вместе с программой.
Изменение параметров можно выполнить в реестре
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\ECN\EvtSys\3.0 |
На ПК должен быть предварительно установлен и настроен Rsyslog.
Создаем файл конфигурации в папке rsyslog.d через vi редактор.
1 |
vi /etc/rsyslog.d/log.conf |
Указываем в этом файле сервер логов и порт.
1 |
*.* @@192.168.5.120:514 |
Выходим из редактора vi
Esc
1 |
:wq |
(сохранить и закрыть)
Перезапускаем rsyslog
1 |
systemctl restart rsyslog |
Все логи начнут передаваться на указанный IP-адрес. Можно выбрать конкретные типы логов для отправки.
Альтернативный вариант — отправка через модуль omfwd.
Коммутатор TL-SG3428XMP
Настройка находится в Maintenance >> Remote Logs.
Указываем IP-адрес сервера логов, порт по умолчанию 514.
Severity — уровень серьезности. Чем он ниже, тем серьезнее событие. (см. описание протокола Syslog)
Status — Enable.
Коммутатор GS1900-24.
Configuration >> Management >> Syslog >> Remote.
Тут то же самое. Указываем IP-адрес, порт, Severity и Facility (идентификатор источника сообщения).
Сохраняем настройку.
На сервере логов запускаем терминал Ctrl+Alt+T.
Входим с правами root.
1 |
sudo su - root |
Пароль.
Переходим в папку.
1 |
cd /etc/rsyslog.d/ |
Создаем файл.
1 |
touch 10-filter.conf |
Имя файла должно быть таким, чтоб он располагался выше чем файл с именем 50-deafault.conf
Отредактируем файл через редактор vi.
1 |
vi /etc/rsyslog.d/10-filter.conf |
Копируем туда строчку.
1 |
:fromhost, isequal, "LOGSERVER" stop |
Синтаксис.
:property, [!]compare-operation, «value»
[свойство] [операция] [значение]
:fromhost — с хоста
isequal — сравнение
LOGSERVER — имя хоста
stop — остановить
Выходим.
1 |
:wq |
Возвращаемся в корень.
1 |
cd |
Перезапускаем Rsyslog.
1 |
systemctl restart rsyslog |
Проверяем статус Rsyslog.
1 |
systemctl status rsyslog |
В результате логи с самого сервера логов перестали появляться в Loganalizer.
Фильтровать можно не только по имени, но так же по IP-адресу, источнику, тэгу и другим параметрам. Подробнее в документации на rsyslog.
Добрый день! Отличная статья, но при настройке loganalyzer, выполняю настройку седьмого шага нажимаю next и только белый экран. Все перезапускал. Ничего не получается. Не могли бы подсказать, что не так?
Возможно проблема с php. «С php8.1 на Ubuntu22, Loganalyzer 4.1.12 не работает.»
Привет. Аналогичная проблема с пустой белой страницей. Пробовал с Loganalyzer 4.1.13 — тоже самое. Свежее версии нет. Не подскажете как можно решить проблему? Откат Ubuntu на 20?
Да, откат до Ubuntu20 пока что единственный известный вариант решения.
Привет, ну с версией ОС определились, — не выше 20.04, а как с php? Лог-сервер на всех версиях php одинаково раболтает?
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4
и вот здесь
apt-get install libapache2-mod-php -y
надо явно указывать php7.4, иначе 8-ой поставит
Проблему с белым экран может быть решена с помощью установка доп.пакета и перезапуска службы.
apt install php-mysqli
service apache2 restart
Большое спасибо за такое руководство по настройке!
Проделал всё это на Debian 11, подтверждаю, что схема рабочая.
На сегодня версия Loganalyzer 4.1.13.
Admin, здравствуйте
Собрал схему согласно статье — все завелось, спасибо.
Только есть вопрос с производительностью, а именно, при базе с размером больше ~40гб что-либо найти (поиск по 2-м ip адресам) не представляется возможным. В итоге запрос вылетает по таймауту.
Пример невыполненных запросов:
source:=10.10.10.10 192.168.1.1 192.168.2.2
Что можете посоветовать?
Указывайте период поиска по меньше. Увеличте время запрос в Laganalyzer
Спасибо за совет, но нет, не работает так. Поиск по одному ip отрабатывает хорошо, как только указываешь два ip (интервал выставлял в 1 минуту) не ищет, висит на «Loading».
Я тот же запрос выполнил из под phpadmin sql запросом, тот же результат. Доходит до того, что вся система виснет, web не открывает. Помогает только рестарт mysql сервиса (
Лучший мануал по установке!
Огромное спасибо!
А что делать, если не работают ряд кнопок, типа admincenter, logout и т.д. и как отключить логи самого сервера Ubuntu?
Как вариант отключения логов самого себя (локальных) можно использовать фильтр. Для этого нужно в папке /etc/rsyslog.d/ создать файл 10-filter.conf в котором указать что фильтровать. Имя файла должно быть таким, чтоб он располагался выше файла с именем 50. Содержание файла например такое :fromhost, isequal, «LOGSERVER» stop (откуда что и что сделать). В данном случае указано имя хоста с которого будут заблокированы логи.
Приветствую!
После нажатия кнопки «Finish», получаю ошибку HTTP ERROR 500
Это тоже PHP?
Уже несколько раз перепроверял, все корректно.
Единственное, 1 раз указал неправильное имя таблиц — systemevents (все буквы в нижнем регистре), в этом случае, логанализер загрузился, но ругнулся на работу с базой, но не помню как именно.
Чтоб не выходило белое окно после настройки loganalyze, ставьте версию 4.1.13 (stable), с ней работает