Rsyslog и loganalyzer настройка на ubuntu
Сегодня я выложу на свой блог инструкцию как на 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-интерфейс по визуализированному отображению собираемых логов:
$ 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.
Читайте также: