Сбор и просмотр логов Syslog в MySQL с помощью LogAnalyzer

Автор: | 04/04/2013

log-analyzer-logoAdiscon LogAnalyzer предоставляет удобный веб-интерфейс для просмотра системных и логов, полученных с других серверов. Таким образом можно создать единый сервер сбора и анализа  логов.

UPD добавлена статья Linux: rsyslogd, MySQL (ommysql) и фильтры (RainerScript и Property-Based).

Приступаем к настройке.

Установка осуществляется на:

# lsb_release -a
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.7 (squeeze)
Release:        6.0.7
Codename:       squeeze

Проверяем строки в файле /etc/rsyslog.conf – они должны быть раскомментированы:

$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

Перезапускаем rsyslog:

# /etc/init.d/rsyslog restart

Теперь мы можем принимать логи с удалённых хостов по UDP или TCP.

Устанавливаем необходимое ПО:

# aptitude -y install mysql-server
# aptitude -y install php5-mysql
# aptitude -y install libapache2-mod-php5

Перезагружаем Apache:

# apachectl restart

Устанавливаем модуль для rsyslog:

# aptitude -y install rsyslog-mysql

Во время установки вводим пароль root сервера MySQL:

Установка rsyslog-mysql

Устанавливаем пароль для самого rsyslog-mysql:

Установка rsyslog-mysql

Повторяем пароль:

Установка rsyslog-mysql

Настройки хранятся в файле /etc/rsyslog.d/mysql.conf:

# cat /etc/rsyslog.d/mysql.conf
### Configuration file for rsyslog-mysql
### Changes are preserved

$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,password

Где Syslog – база, в которую демон rsyslog будет вести запись, rsyslog – пользователь этой базы, password – пароль пользователя, который мы указывали при установке rsyslog-mysql.

На сервере, с которого необходимо передавать данные – редактируем файл /etc/rsyslog.conf, в него добавляем:

local0.* @logger.domain.su

Учтите – это лишь пример настройки, вы можете настроить свой rsyslog другим способом.

В данном примере логи, поступающие в канал local0 будут передаваться по UDP на сервер logger.domain.su. Что бы использовать TCP – устанавливаем @@.

Перезапускаем демон:

$ sudo service rsyslog restart
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.

Права на базу должны быть установлены автоматически, но на всякий случай – проверьте:

$ mysql -u rsyslog -p

В случае ошибки доступа – установите права вручную.

Подключаемся к MySQL серверу:

$ mysql -u debian-sys-maint -p

Даём права на базу для пользователя:

mysql> grant all on Syslog.* to ‘rsyslog’@’localhost’ identified by ‘password’;
Query OK, 0 rows affected (0.00 sec)

Редактируем файл конфигурации Apache, в него добавляем строку:

Alias /logger “/var/www/logger/”

Переходим в каталог для загрузок::

$ cd /home/setevoy/opt/

Качаем последнюю версию с сайта разработчика:

$ wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.3.tar.gz

Распаковываем:

# tar xpf loganalyzer-3.6.3.tar.gz

Копируем каталог src в каталог, где будет работать наш LogAnalyzer:

# cp -R loganalyzer-3.6.3/src/* /var/www/domain.su/logger

Переходим в этот каталог:

# cd /var/www/domain.su/logger

Создаём пустой файл конфигурации (его заполнит сам инсталлятор):

# touch config.php
# chmod 666 config.php

Переходим на страницу http://domain.su/logger/install.php и приступаем к настройке LogAnalyzer.

Установка и настройка LogAnalyzer на Debian 6

Нажимаем Next:

Установка и настройка LogAnalyzer на Debian 6

Файл config.php доступен для записи, продолжаем – Next:

Установка и настройка LogAnalyzer на Debian 6

В поле Enable User Database выбираем Yes – появятся поля для настройки соединения с базой данных сервера MySQL:

Установка и настройка LogAnalyzer на Debian 6

Обратите внимание, что поле Database Name заполнено именем базы с большой буквы – Syslog.

Настройки берём из файла /etc/rsyslog.d/mysql.conf.

Что бы запретить просмотр всем желающим – ставим Yes в строке Require user to be logged in.

Жмём Next и получаем предупреждение перед заполнением базы:

Установка и настройка LogAnalyzer на Debian 6

Жмём Next.

Проверка MySQL базы и таблиц:

Установка и настройка LogAnalyzer на Debian 6

Создаём администратора:

Установка и настройка LogAnalyzer на Debian 6

На следующей странице в поле Source Type выбираем MySQL Native:

Установка и настройка LogAnalyzer на Debian 6

Заполняем поля теми же данными из файла /etc/rsyslog.d/mysql.conf:

Установка и настройка LogAnalyzer на Debian 6

Ещё раз обратите внимание на имя таблицы SystemEvents – обязательно использование ЗАГЛАВНЫХ букв.

Жмём Next.

Установка завершена:

Установка и настройка LogAnalyzer на Debian 6

Переходим на страницу http://domain.su/logger, вводим логин-пароль и попадаем на главную страницу LogAnalyzer.

Теперь на удалённом сервере, с которого необходимо отправлять логи, выполняем:

$ tail -f /var/log/messages | logger -p local0.info

Логи будут перенаправляться утилитой logger в канал local0, из которого rsyslog будет перенаправлять их на сервер @logger.domain.su.

Что бы добавить возможно просмотра из ещё одной базы данных – добавить её можно в Admin Center > Sources, нажав ссылку Add new Source:

Установка и настройка LogAnalyzer на Debian 6

Там же можно добавьте в роли Source (источника) не базу MySQL, а локальный файл, например – /var/log/auth.log – предварительно проверив права доступа к нему:

Установка и настройка LogAnalyzer на Debian 6

Если файл, который необходимо наблюдать, находится в другом каталоге – редактируем файл config.php. В нём находим строку:

$CFG[‘DiskAllowed’][] = “/var/log/”;

Копируем её, и добавляем там же:

// — Configure allowed directories for File base logstream sources
$CFG[‘DiskAllowed’][] = “/var/log/”;
$CFG[‘DiskAllowed’][] = “/home/teamcity/logs”;

Устанавливаем права только на чтение на файл конфигурации LogAnalyzer:

# chmod 644 /var/www/domain.su/logger/config.php

И удаляем файл инсталлятора:

#rm /var/www/domain.su/logger/install.php

Личные ощущения от работы с LogAnalyzer самые положительные. Особенно после нескольких дней мучений с Graylog2. Логи поступают без задержек (пока до 500 записей в секунду), что постоянно происходило с Graylog2. Нагрузка на сервер – минимальна, в то время как Graylog2 грузил CPU на 100%. Всё работает стабильно и без сбоев – в отличии от Graylog2.