Rsyslog и loganalyzer настройка на ubuntu

Обновлено: 05.07.2024

Сегодня я выложу на свой блог инструкцию как на Ubuntu Trusty установить сервис по сбору и визуализации собираемых логов с удаленных систем и устройств. Ранее уже такой сервис я уже разворачивал и использовал для единого сбора логов со всех подконтрольных Windows станций, но все меняется, вот к примеру сейчас я использую совместно несколько дистрибутивов Ubuntu: Precise & Trusty, и вот последний все чаще. А потому нужно уметь развернуть сервис LogAnalyzer и на другом релизе. Ниже пошаговые действия, так сказать от и до.

Системный требования моей станции:

CPU = 1Ghz

RAM = 2G

HDD = 50Gb

Ниже небольшие пояснения.

Обновляю систему до стабильного состояния в рамках текущего релиза Ubuntu Trusty (LTS):

$ sudo apt-get update && sudo apt-get upgrade -y

Устанавливаю Linux Apache Mysql PHP связку :

$ sudo nano /etc/apache2/sites-available/000-default.conf

$ sudo rm -Rf /var/www/html

$ sudo nano /etc/apache2/apache2.conf

$ sudo service apache2 restart

$ sudo apt-get install rsyslog-mysql rsyslog-relp -y

Configure database for rsyslog-mysql with dbconfig-common? Yes

MySQL application password for rsyslog-mysql: 712mbddr@

Password confirmation: 712mbddr@

$ sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup

$ sudo nano /etc/rsyslog.conf

$ sudo service rsyslog restart

$ sudo nano /etc/rsyslog.d/relp.conf

$ sudo mkdir -p /var/rsyslog/work

$ sudo nano /etc/rsyslog.d/mysql.conf

$ sudo service rsyslog restart

Теперь когда подготовка завершена пора перейти к разбору шагов по установке LogAnalyzer на сервер:

$ sudo mkdir -p /opt/log

ekzorchik@srv-host:/opt/log$ sudo tar -zxf loganalyzer-3.6.6.tar.gz && cd loganalyzer-3.6.6

ekzorchik@srv-host:/opt/log/loganalyzer-3.6.6$ sudo mkdir /var/www/logs

ekzorchik@srv-host:/opt/log/loganalyzer-3.6.6$ sudo cp -R src/* /var/www/logs/

ekzorchik@srv-host:/opt/log/loganalyzer-3.6.6$ sudo cp contrib/* /var/www/logs/

ekzorchik@srv-host:/opt/log/loganalyzer-3.6.6$ cd /var/www/logs/

ekzorchik@srv-host:/var/www/logs$ sudo chmod +x configure.sh secure.sh

ekzorchik@srv-host:/var/www/logs$ sudo ./configure.sh

ekzorchik@srv-host:/var/www/logs$ cd

$ sudo chown -R www-data:www-data /var/www/

$ mysql -u root -p712mbddr@

mysql> create database db_analyzer;

mysql> grant all on db_analyzer.* to analyzer@'localhost' identified by '712mbddr@';

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Здесь шаги идентичны ранее опубликованной заметки:

Database Host: localhost

Database Port: 3306

Database Name: db_analyzer

Table prefix: logcon_

Database User: analyzer

Database Password: 712mbddr@

Require user to be logged in: No

Authentication method: Internal authentication

Шаг №5: Должно быть так, а после нажимаем Next

  • Successfully executed statements: 23
  • Failed statements: 0

You can now proceed to the next step adding the first LogAnalyzer Admin User!

Шаг №6: Создаем административного пользователя по управлению через Web-интерфейс:

Repeat Password: 712mbddr@

а после нажимаем Next

Name of the Source: My Syslog Source

Source Type: MYSQL Native

Select View: Syslog Fields

Table type: MonitorWare

Database Host: localhost

Database Name: Syslog

Database Tablename: SystemEvents

Database User: rsyslog

Database Password: 712mbddr@

Enable Row Counting: No

Congratulations! You have successfully installed LogAnalyzer :)!

Click here to go to your installation.

а после нажимаем Finish

И по проходу дальнейших шагов предомной предстает уже знакомый Web-интерфейс по визуализированному отображению собираемых логов:

Web-сервис визуализации собираемых логов с удаленных система/устройств

$ sudo rm /var/www/logs/config.php

и пересоздаем базу db_analyzer

$ mysql -u root -p712mbddr@

mysql> drop database db_analyzer;

mysql> create database db_analyzer;

mysql> grant all on db_analyzer.* to analyzer@'localhost' identified by '712mbddr@';

mysql> flush privileges;

mysql> quit

$ sudo du -sh /var/lib/mysql/db_analyzer

$ sudo du -sh /var/lib/mysql/Syslog

Для чего я еще раз разобрал как поставить инструмент по управлению собиранию логов тех систем за которыми нужен глаз да глаз. Просто порой к примеру базовый станции Grandstream & D-Link падают, отваливаются от облачной АТС и мне хочется побольше узнать что происходит в этот момент и до него, а без логов это сделать не представляется возможным. Ведь чтобы базовые станции восстановили свою работу я их просто перезагружаю раз в день скриптом, а при этом логи стираются, вот так вот. А мне они необходимы. На этом я прощаюсь, с уважением автор блога — ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Настраиваю текущую систему скриптом выкачанным из своего репозитария, у Вас он свой или оставляйте систему по дефолту. По личным соображения я его не публикую.

Напомню тем кто смотрит на эту заметку впервые (А я уже использовал данный сервис в Ubuntu Trusty, смотреть заметку: или брать за основу), разворачиваемый сервис LogAnalyzer (версия 4.1.6 — это сервис для централизованного хранения логов отправляемых на эту систему, будь-то сетевое оборудование Mikrotik, будь-то Ubuntu системы или Windows системы. Я описываю свое практическое использованию и в следствии этого хочу сделать акцент, что сервис LogAnalyzer может использовать и для чего-то иного не упомянутого в этой заметке. Я же описываю только то с чем работаю и ничто другое.

$ sudo apt-get install apache2 mysql-server mysql-client -y

$ sudo mysqladmin -u root password 712mbddr@

$ apt-cache search rsyslog-mysql

rsyslog-mysql - MySQL output plugin for rsyslog

$ sudo apt-get install rsyslog-mysql -y

Configure database for rsyslog-mysql with dbconfig-common? Yes

MySQL application password for rsyslog-mysql: 712mbddr@

Password confirmation: 712mbddr@

Создаю базу данных, пользователи и пароль которые будут использоваться под сервис rsyslog-mysql:

$ sudo mysql -u root -p712mbddr@ -e "create database dbsyslog character set utf8"

$ sudo mysql -u root -p712mbddr@ -e "create user 'ussyslog'@'localhost' identified by '612mbddr@'"

$ sudo mysql -u root -p712mbddr@ -e "grant all on dbsyslog.* to 'ussyslog'@'localhost';"

Загружаю содержимое базы, его схему в созданную базу данных:

$ sudo mysql -u ussyslog -p612mbddr@ -D dbsyslog < /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql

Теперь создаю базу данных, пользователи и пароль которые будут использоваться под сервис LogAnalyzer:

$ sudo mysql -u root -p712mbddr@ -e "create database dbloganalyzer character set utf8"

$ sudo mysql -u root -p712mbddr@ -e "create user 'usloganalyzer'@'localhost' identified by '612mbddr@'"

$ sudo mysql -u root -p712mbddr@ -e "grant all on dbloganalyzer.* to 'usloganalyzer'@'localhost';"

$ sudo nano /etc/rsyslog.conf

$ sudo nano /etc/rsyslog.d/mysql.conf

*.* action(type="ommysql" server="localhost" db="dbsyslog" uid="ussyslog" pwd="612mbddr@")

$ sudo systemctl restart rsyslog

$ tar zxf loganalyzer-4.1.6.tar.gz

$ sudo mkdir /var/www/html/loganalyzer

$ sudo cp -r loganalyzer-4.1.6/src/* /var/www/html/loganalyzer/

$ sudo touch /var/www/html/loganalyzer/config.php

$ sudo chown -R www-data:www-data /var/www/html/

Проблема не отрабатывают PHP скрипты:

$ sudo apt-get install libapache2-mod-php7.2 -y

После на странице Web-браузера нажимаю клавишу F5 для обновления состояния экрана и нажимаю на гиперссылку с надписью «here» надписи « Errordetails: Error, main configuration file is missing. Click here to install Adiscon LogAnalyzer! » после запускается мастер настройки:

Шаг №1: Prerequisites

Нажимаю Next

Шаг №2: Verify File Permissions

Проверяются разрешения на файл configure.sh из каталога contrib , они должны иметь статус записи, т. е. Writeable и нажимаю Next

Шаг №3: Basic Configuration

  • Enable User Database: Yes
  • Database Host: localhost
  • Database Port: 3306
  • Database Name: dbloganalyzer
  • Table prefix: logcon_
  • Database User: usloganalyzer
  • Database Password: 612mbddr@
  • Require user to be logged in: No
  • Authentication method: Internal authentication

и нажимаю Next

Шаг №4: Вот только этого шага у меня нет, а всего лишь белая страница:

смотрю логи Web-сервиса:

$ sudo tail -f /var/log/apache2/error.log

Как видно у меня не установлен модуль для связи php и mysql:

$ apt-cache search php | grep mysql

php-mysql - MySQL module for PHP [default]

php7.2-mysql - MySQL module for PHP

php-mdb2-driver-mysql - mysql MDB2 driver

$ sudo apt-get install php7.2-mysql -y

$ sudo systemctl restart apache2

После на странице Web-браузера нажимаю клавишу F5 для обновления состояния экрана и вижу Шаг №4: Create Tables, нажимаю Next

Шаг №5: Check SQL Results

Tables have been created. Check the List below for possible Error's

  • Successfully executed statementes: 24
  • Failed statementes: 0

You can now proceed to the next step adding the first LogAnalyzer Admin User!

и нажимаю Next

Шаг №6: Creating the Main Useraccount ( Создаю административный аккаунт по использованию сервисом LogAnalyzer)

и нажимаю Next, если появилась надпись красного цвета « Successfully created User 'ekzorchik'. », то значит Вы правильно указали пароль и такого административного пользователя нет, он уникален

Шаг №7: Create the first source for syslog messages

  • Name of the Source: My Syslog Source
  • Source Type: MYSQL Native
  • Select View: Syslog Fields
  • Table type: MonitorWare
  • Database Host: localhost
  • Database Name: dbsyslog
  • Database Tablename: systemevents
  • Database User: ussyslog
  • Database Password: 612mbddr@
  • Enable Row Counting: No

и нажимаю Next

Шаг №8: Done

должны быть строки: Congratulations! You have successfully installed LogAnalyzer :)!

Перехожу по гиперссылке и меня встречает первая ошибка, что указанной таблицы systemevents нет:

Вспомнил, что таблица должна быть надписана с заглавной буквы:

$ sudo nano /var/www/html/loganalyzer/config.php

$ sudo systemctl restart apache2

и через F5 ошибка пропадает и я вижу, как логи системы формируются в базу dbsyslog, а уже LogAnalyzer читает эту базу и отображает все логирование через удобный Web-интерфейс:

Если нужно переустановить LogAnalyzer то шаги сводятся к удалению config.php и созданию заново баз, пользователей и паролей.

На заметку: мой Вам совет, администрируйте в одни руки инфраструктуру дабы ни от кого не нужно было быть зависимым и конечно документируйте настройки, изменения в инфраструктуре, как работают сервисы и оборудование.

Задача данной заметки выполнена, на этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.


Совсем недавно у меня возникла необходимость создать центральный лог-сервер с веб-интерфейсом и в этой статье я хотел бы поделиться опытом, возможно кому-то он будет полезен. Я опишу установку и настройку веб-просмотрщика логов LogAnalyzer, Rsyslog-клиента, который будет отсылать все логи на удаленный Rsyslog-сервер, и последний, в свою очередь, будет писать их в базу MySQL.

В качестве ОС я выбрал Ubuntu 12.04.

Адреса тестовых вебнод:
192.168.1.51 (loganalyzer-mysql.ip) — Rsyslog-сервер, на этом хосте также будет проинсталлирован LogAnalyzer
192.168.1.50 (loganalyzer-mongo.ip) — Rsyslog-клиент, который будет отсылать логи на сервер loganalyzer-mysql.ip

Настраиваем серверную часть, для чего добавим репозиторий от разработчика Rsyslog:



Конечно, можно воспользоваться версией Rsyslog, что доступна в стандартных репозиториях, однако у меня имелась проблема с открытием 514 TCP-порта от имени пользователя syslog.

Обновляем пакеты и устанавливаем Rsyslog с дополнительными пакетами, которые в дальнейшем будут необходимы:


Как я уже сказал выше, будем настраивать запись логов в локальную MySQL базу. Также нужно будет ответить на некоторые вопросы в процессе установки. Пакет rsyslog-mysql во время конфигурации запросит создание пользователя и базы для хранения будущих логов:


Предварительно следует указать пароль для пользователя root базы данных. С его помощью будет залита структура базы rsyslog:


Указания пароля для отдельного пользователя rsyslog базы данных:


Если MySQL-сервера не существовало на хосте — то установщик проинсталирует его и также предложит создать пароль для пользователя root.

Конечный конфиг интеграции Rsyslog и MySQL выглядит следующим образом:


*.* — запись всех логов в базу
ommysql — модуль, с помощью которого rsyslog будет писать в MySQL
Syslog — имя базы
rsyslog — пользователь, которому предоставлен доступ писать в базу Syslog
p@ssw0rD — пароль пользователя rsyslog

Перегружаем rsyslog и проверяем базу:


Похоже, что логи пишутся, как и ожидалось.
Теперь настроим прием логов от удаленного хоста. Для этого отредактируем конфигурационный файл на Rsyslog-сервере, т.е. проверим не закомментированы ли строки:


Перегружаем службу rsyslog. Таким образом 514-е порты UDP и TCP будут открыты для приема логов.

Переходим к настройке Loganalyzer. Он будет установлен на ноду с IP 192.168.1.51, то есть на ноду с Rsyslog-сервером. В качестве веб-сервера используем Apache, поэтому установим его и пакеты необходимые для работы LogAnalyzer-а:


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


На момент публикации этой статьи последняя версия просмотрщика логов Loganalyzer — 3.6.5.
Создаем виртуальный хост, в котором следует не забыть, как минимум, изменить параметры ServerName и DocumentRoot:

Активируем виртуальный хост, проверяем конфигурационные файлы и перезагружаем Апач:


Открываем ссылки loganalyzer-mysql.ip/install.php (в моем случае loganalyzer-mysql.ip через /etc/hosts привязан к IP-адресу 192.168.1.51 ). Отвечаем на поставленные вопросы:


Проверка прав доступа к директориям:


Конфигурация пользователя для базы и некоторых дополнительных опций. Вписываем сюда значения из конфигурационного файла /etc/rsyslog.d/mysql.conf о котором я писал выше. Для этого может использоваться только база данных MySQL.


Проверка доступов к базе по предоставленному логину/паролю и заливка структуры таблиц, с которыми будет работать LogAnalyzer.


Создание администратора к web-интрерфейсу LogAnalyzer.


Добавляем источник логов для отображения. LogAnalyzer умеет показывать записи из текстового файла, базы данных MongoDB или MySQL. Описываем опции доступа к базе (все пишем в точности так как показано на скриншоте ниже, регистр также важен):



Все готово! Логинимся, используя логин/пароль.


Интерфейс LogAnalyzer-а выглядит следующим образом:


Он также умеет рисовать немного графиков:


Пользователям браузера Chrome сразу посоветую убрать галочку «Use Popup to display the full message details», иначе будут заметны значительные графические баги:


Сейчас LogAnalyzer отражает логи только с одной хоста, то есть именно те​, что собирает rsyslog. Поэтому настраиваем отсылки логов с удаленного сервера, для чего редактируем конфиг rsyslog на хосте 192.168.1.50 и добавляем опцию:


*.* — описание всех логов по важности и программах, которые их пишет.
@@ — отсылать логи по TCP
@ — отсылать логи по UDP
192.168.1.51 — сервер, на который будут направлены логи.

Иногда возникает желание отсылать логи сервисов, которые не умеют писать в syslog. Потому может быть полезная подобная конфигурация:


Все что в директории /etc/rsyslog.d/ и с окончанием conf включается в основной конфиг /etc/rsyslog.conf. В данном случае будут отсылаться логи из текстового файла /var/log/mongodb/mongodb.log и помечаться как ошибки. Все что в файле /var/log/mongodb/mongodb.log будет отослано в общий syslog и иметь такой вид:


И вот результирующий вид LogAnalyzer-а:


В качестве базы хранения логов можно использовать и другие варианты. Идеальным выбором может служить нереляционная база данных MongoDB, ведь работу с ней поддерживает как LogAnalyzer, так и Rsyslog.


Совсем недавно у меня возникла необходимость создать центральный лог-сервер с веб-интерфейсом и в этой статье я хотел бы поделиться опытом, возможно кому-то он будет полезен. Я опишу установку и настройку веб-просмотрщика логов LogAnalyzer, Rsyslog-клиента, который будет отсылать все логи на удаленный Rsyslog-сервер, и последний, в свою очередь, будет писать их в базу MySQL.

В качестве ОС я выбрал Ubuntu 12.04.

Адреса тестовых вебнод:
192.168.1.51 (loganalyzer-mysql.ip) — Rsyslog-сервер, на этом хосте также будет проинсталлирован LogAnalyzer
192.168.1.50 (loganalyzer-mongo.ip) — Rsyslog-клиент, который будет отсылать логи на сервер loganalyzer-mysql.ip

Настраиваем серверную часть, для чего добавим репозиторий от разработчика Rsyslog:



Конечно, можно воспользоваться версией Rsyslog, что доступна в стандартных репозиториях, однако у меня имелась проблема с открытием 514 TCP-порта от имени пользователя syslog.

Обновляем пакеты и устанавливаем Rsyslog с дополнительными пакетами, которые в дальнейшем будут необходимы:


Как я уже сказал выше, будем настраивать запись логов в локальную MySQL базу. Также нужно будет ответить на некоторые вопросы в процессе установки. Пакет rsyslog-mysql во время конфигурации запросит создание пользователя и базы для хранения будущих логов:


Предварительно следует указать пароль для пользователя root базы данных. С его помощью будет залита структура базы rsyslog:


Указания пароля для отдельного пользователя rsyslog базы данных:


Если MySQL-сервера не существовало на хосте — то установщик проинсталирует его и также предложит создать пароль для пользователя root.

Конечный конфиг интеграции Rsyslog и MySQL выглядит следующим образом:


*.* — запись всех логов в базу
ommysql — модуль, с помощью которого rsyslog будет писать в MySQL
Syslog — имя базы
rsyslog — пользователь, которому предоставлен доступ писать в базу Syslog
p@ssw0rD — пароль пользователя rsyslog

Перегружаем rsyslog и проверяем базу:


Похоже, что логи пишутся, как и ожидалось.
Теперь настроим прием логов от удаленного хоста. Для этого отредактируем конфигурационный файл на Rsyslog-сервере, т.е. проверим не закомментированы ли строки:


Перегружаем службу rsyslog. Таким образом 514-е порты UDP и TCP будут открыты для приема логов.

Переходим к настройке Loganalyzer. Он будет установлен на ноду с IP 192.168.1.51, то есть на ноду с Rsyslog-сервером. В качестве веб-сервера используем Apache, поэтому установим его и пакеты необходимые для работы LogAnalyzer-а:


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


На момент публикации этой статьи последняя версия просмотрщика логов Loganalyzer — 3.6.5.
Создаем виртуальный хост, в котором следует не забыть, как минимум, изменить параметры ServerName и DocumentRoot:

Активируем виртуальный хост, проверяем конфигурационные файлы и перезагружаем Апач:


Открываем ссылки loganalyzer-mysql.ip/install.php (в моем случае loganalyzer-mysql.ip через /etc/hosts привязан к IP-адресу 192.168.1.51 ). Отвечаем на поставленные вопросы:


Проверка прав доступа к директориям:


Конфигурация пользователя для базы и некоторых дополнительных опций. Вписываем сюда значения из конфигурационного файла /etc/rsyslog.d/mysql.conf о котором я писал выше. Для этого может использоваться только база данных MySQL.


Проверка доступов к базе по предоставленному логину/паролю и заливка структуры таблиц, с которыми будет работать LogAnalyzer.


Создание администратора к web-интрерфейсу LogAnalyzer.


Добавляем источник логов для отображения. LogAnalyzer умеет показывать записи из текстового файла, базы данных MongoDB или MySQL. Описываем опции доступа к базе (все пишем в точности так как показано на скриншоте ниже, регистр также важен):



Все готово! Логинимся, используя логин/пароль.


Интерфейс LogAnalyzer-а выглядит следующим образом:


Он также умеет рисовать немного графиков:


Пользователям браузера Chrome сразу посоветую убрать галочку «Use Popup to display the full message details», иначе будут заметны значительные графические баги:


Сейчас LogAnalyzer отражает логи только с одной хоста, то есть именно те​, что собирает rsyslog. Поэтому настраиваем отсылки логов с удаленного сервера, для чего редактируем конфиг rsyslog на хосте 192.168.1.50 и добавляем опцию:


*.* — описание всех логов по важности и программах, которые их пишет.
@@ — отсылать логи по TCP
@ — отсылать логи по UDP
192.168.1.51 — сервер, на который будут направлены логи.

Иногда возникает желание отсылать логи сервисов, которые не умеют писать в syslog. Потому может быть полезная подобная конфигурация:


Все что в директории /etc/rsyslog.d/ и с окончанием conf включается в основной конфиг /etc/rsyslog.conf. В данном случае будут отсылаться логи из текстового файла /var/log/mongodb/mongodb.log и помечаться как ошибки. Все что в файле /var/log/mongodb/mongodb.log будет отослано в общий syslog и иметь такой вид:


И вот результирующий вид LogAnalyzer-а:


В качестве базы хранения логов можно использовать и другие варианты. Идеальным выбором может служить нереляционная база данных MongoDB, ведь работу с ней поддерживает как LogAnalyzer, так и Rsyslog.

Читайте также: