До меня это не сразу дошло, но LogAnalyzer можно спокойно использовать без базы данных, что актуально для дома или в маленьких проектах, где логи смотреть надо, а заморачиваться и излишне нагружать систему не хочется.
Однако, в таком режиме доступны не все функции, к примеру, авторизация пользователей1), отчеты и… может быть что-то еще, не знаю.
Вместо LogAnalyzer можно использовать LibreNMS.
Нужен для работы LogAnalyzer. Ниже мое творчество, основанное на данных2) из разных источников. Установка производится на Raspberry Pi OS 11 (bullseye).
sudo apt update && sudo apt upgrade
;sudo apt install apache2 php libapache2-mod-php
;sudo nano /etc/apache2/apache2.conf
и установить переменную «ServerName»5);sudo nano /etc/apache2/mods-enabled/dir.conf
и переместить «index.php» в начало списка;В базовом варианте настроить нужно только авторизацию:
sudo nano /etc/apache2/sites-enabled/000-default.conf
и в секцию «<VirtualHost *:80>» вставить код ниже.<Directory "/var/www/html"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory>
Теперь нужно проверить синтаксис конфигурации и, если все хорошо, перезапустить сервис:
sudo apache2ctl configtest
;sudo systemctl restart apache2
.Опять же, информация ниже, это микс из некоторого количества разных источников8), т.к. ни в одном месте нет единой картины, увы, детка, это опен сорс, чтоб его…
В домашнем каталоге выполнить последовательно следующие команды:
mkdir tmpLA && cd tmpLA
;wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz
9);tar zxvf loganalyzer-4.1.12.tar.gz
;sudo mv loganalyzer-4.1.12/src/* /var/www/html
;sudo chown -R www-data:www-data /var/www/html
;cd ~ && rm -r tmpLA
.Для заполнения конфигурационного файла, проще всего перейти браузером по адресу сервера и ответить на вопросы конфигуратора, после чего в каталоге с анализатором создастся файл «config.php».
Ниже описание некоторых полезных параметров из файла конфигурации, для открытия которого нужно выполнить команду sudo nano /var/www/html/config.php
.
$CFG['ViewMessageCharacterLimit'] = 100;
– изменение лимита символов в колонке «Message»;$CFG['InjectHtmlHeader'] = "<style>.mainheader > tbody > tr > td:nth-child(2) { display:none; }</style>";
– скрытие рекламного баннера;$CFG['ShowMessage'] = true;
– так и не понял, что это делает, а в код поленился лезть;$CFG['Columns'] = array ( SYSLOG_DATE, SYSLOG_FACILITY, SYSLOG_SEVERITY, SYSLOG_HOST, SYSLOG_MESSAGE );
– изменение состава колонок вида «Legacy Columns Configuration»10);$CFG['DefaultViewsID'] = "SYSLOG";
– вид по умолчанию, если в источнике не указано другое;$CFG['ViewDefaultLanguage'] = "ru";
– язык по умолчанию, см. секцию с локализацией;$CFG['ViewEnableAutoReloadSeconds'] = 60;
– периодичность обновления страницы по умолчанию;$CFG['DefaultSourceID'] = 'Source2';
– источник по умолчанию.Дополнительные источники добавляются в конце конфигурации перед закрывающим тегом «?>».
$CFG['Sources']['Source2']['ID'] = 'Source2'; $CFG['Sources']['Source2']['Name'] = 'MikroTik Devices'; $CFG['Sources']['Source2']['ViewID'] = 'LEGACY'; $CFG['Sources']['Source2']['SourceType'] = SOURCE_DISK; $CFG['Sources']['Source2']['LogLineType'] = 'Syslog23'; $CFG['Sources']['Source2']['DiskFile'] = '/var/log/mikrotik/remote.log';
Данный пример иллюстрирует добавление логов устройств MikroTik, которые пишутся в файл «remote.log» в формате IETF-syslog (RFC 5424) и для просмотра используется набор колонок «legacy».
Чисто для эстетического удовольствия перевел те части интерфейса, которые доступны в рамках этой статьи.
Для установки русского перевода LogAnalyzer'а нужно в домашнем каталоге сделать следующее:
wget https://wiki.soloshin.su/_media/raspberry_pi/pi_4_model_b/raspberry_pi_os/syslog-ng/loganalyzer-4.1.12-russian.tar.gz
;tar -xvf loganalyzer-4.1.12-russian.tar.gz && rm loganalyzer-4.1.12-russian.tar.gz
;sudo mv ru /var/www/html/lang
.Однако, это не совсем все… Часть строк находится в файле конфигурации.
Раз кусочек11):
$CFG['SearchCustomButtonCaption'] = "Хочу расстроиться!";
И вот еще:
$CFG['Search'][] = array ( "DisplayName" => "Предупреждения и ошибки", "SearchQuery" => "filter=severity%3A0%2C1%2C2%2C3%2C4&search=Search" ); $CFG['Search'][] = array ( "DisplayName" => "Только ошибки", "SearchQuery" => "filter=severity%3A0%2C1%2C2%2C3&search=Search" ); $CFG['Search'][] = array ( "DisplayName" => "Сообщения за последний час", "SearchQuery" => "filter=datelastx%3A1&search=Search" ); $CFG['Search'][] = array ( "DisplayName" => "Сообщения за последние 12 часов", "SearchQuery" => "filter=datelastx%3A2&search=Search" ); $CFG['Search'][] = array ( "DisplayName" => "Сообщения за последние 24 часа", "SearchQuery" => "filter=datelastx%3A3&search=Search" ); $CFG['Search'][] = array ( "DisplayName" => "Сообщения за последние 7 дней", "SearchQuery" => "filter=datelastx%3A4&search=Search" ); $CFG['Search'][] = array ( "DisplayName" => "Сообщения за последний 31 день", "SearchQuery" => "filter=datelastx%3A5&search=Search" );
Обсуждение