Сервер централизованного сбора логов с серверов Windows и Linux на базе rsyslog и LogAnalizer

Во многих фирмах, особенно большого размера, возникает задача централизованного сбора и анализа логов. Для этого существует много разных продуктов — Quest, Splunk и т. д. Возможности у них, конечно, достаточно большие. Но, за то, и цена не маленькая. Та и продаются они не маленькими пакетами. Например Quest — от 200 лицензий. А что делать, если такое количество не нужно? Покупать лишнее не хочется ведь. Вот и приходят на помощь возможности OpenSource.

В Linux есть замечательный демон — rsyslog. Он может собирать данные не только локально, но и по сети. Было бы кому отдавать эти данные. Но, в связи с тем, что сегодня отдавать логи на rsyslog умеют многие (и Windows в том числе), именно на нем мы и рассмотрим установку и настройку сервера сбора логов.

На нашем Linux-сервере установим в качестве операционки Ubuntu Linux 10.04. Rsyslog на нем уже есть. Осталось это все настроить.

Для того, что бы эти логи можно было удобно смотреть и анализировать будем хранить их в базе данных — MySQL. Соответственно установим базу данных:

$sudo aptitude install mysql-server mysql-client.

 

При настройке введем пароль root для MySQL и постараемся его не забыть — он нам еще пригодится.

Теперь научим rsyslog хранить свои данные (то есть все логи) в MySQL. Тля этого установим еще два пакета — syslog-mysql и rsyslog-relp

$sudo aptitude install rsyslog-mysql rsyslog-relp

В процессе настройки в MySQL будет создана база Syslog и потребуется ввести пароль для пользователя rsyslog.

Этот пароль тоже не забываем.

Далее мы научим наш сервер принимать логи по сети. Для этого редактируем файл /etc/rsyslog.conf.

Раскомментируем в нем следующие строки:

# provides UDP syslog reception 
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

И, естественно, перезапустим сервис rsyslog

$sudo service rsyslog restart

 

Для того, что бы наш сервер умел принимать сообщения по RELP — Reliable Event Logging Protocol нужно дополнительное конфигурирование. Создадим файл /etc/rsyslog.d/relp.conf и внесем в него следующее:

 

$ModLoad imrelp 
$InputRELPServerRun 20514

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

Создадим каталог, в котором rsyslog будет хранить очередь сообщений

$ sudo mkdir -p /var/rsyslog/work

 

И добавим в /etc/rsyslog.d/mysql.conf такие строки:

# Buffering stuff: 
$WorkDirectory /var/rsyslog/work # default location for work (spool) files
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName dbq # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure

И снова перезапустим наш демон:

$sudo service rsyslog restart

 

Вот на этом, собственно, настройка сервера сбора логов закончена. Если бы не одно «НО». Хотелось бы как-то визуализировать отчетность. Не все хотят и могут читать логи в консоли. Вот тут нам на помощь приходит LogAnalizer — веб-интерфейс для работы с логами.

 

 

 

Настройка LogAnalizer

  

Для работы LogAnalizer нам понадобится веб-сервер, php и MySQL. Так как MySQL мі уже установили — доустановим недостающие компоненты:

$sudo aptitude install apache2 php5 php5-mysql php5-gd

  

Скачаем последнюю версию LogAnalizer:

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

Распакуем его:

$tar -xzf loganalyzer-3.4.0.tar.gz И перейдем в его папку

$cd loganalyzer-3.4.0

 

Теперь установим его в каталог на нашем веб-сервере:

 

$sudo mkdir /var/www/logs

$sudo cp -R src/* /var/www/logs/

$sudo cp contrib/* /var/www/logs/

$cd /var/www/logs/

$sudo chmod +x configure.sh secure.sh

$sudo ./configure.sh

 

 

Теперь создадим базу данных для работы LogAnalizer:

$sudo mysql -p

mysql> create database LogAnalyzerUsers;

mysql> show databases;

 

И создадим пользователя la с паролем la для доступа к этой базе:

mysql> grant all on LogAnalyzerUsers.* to la@'localhost' identified by 'la';

mysql> quit

 

 

 

 

 

Для продолжения настройки откроем веб-интерфейс LogAnalizer'а

http://ourserver/logs

 

И начинаем установку

la1

 

 

la2

Далее проверяется наличие и права доступа к файлу config.php

 

 

la3

 

Для того, что бы была возможность создавать пользователей внутри LogAnalizer'а и раздавать им права доступа, выбираем Enable User Database — yes

Заполняем логин, пароль и имя базы, как мы их создали. То есть в моем случае имя базы LogAnalizerUsers

логин — la

пароль — la

Будьте внимательны с регистром символов! Он имеет значение!

 

la4

 

 

На следующих двух шагах проверяется соединение с базой данных и в ней создаются соответствующие таблицы.

la5

 

la6

 

 

Далее создается административная учетная запись (я ее назвал admin)

la7

 

 

Теперь мы описываем параметры соединения с базой rsyslog.

Вводим все параметры именно так, как показано на рисунке. Снова не забываем о том, что регистр символов имеет большое значение.

 

la8

 

 

И, наконец, все. Настройка завершена.

 

la9

 

 

Жмем Finish и смотрим логи в веб-интерфейсе.

  

main-win

 

Если что-то настроили не правильно, ничего страшного. Всегда можно провести настройку заново.

Для этого в каталоге /var/www/logs удаляем файл confih.php и потом в нем же запускаем скрипт configure.sh

После этого открываем заново в браузере http://ourserver/logs и конфигурируем все заново.

  

rsyslog и Windows

 Есть возможность передавать в rsyslog журналы Windows-серверов и рабочих станций.

Для этого качаем eventlog-to-syslog, и копируем evtsys.exe и evtsys.dll в \%WinDir%\system32

После чего запускаем

C:\Windows\system32>evtsys.exe -i -h ip.address.of.myserv

После перезагрузки (или ручного запуска сервиса evtsys) все журналы Windows будут передаваться в rsyslog нашего сервера и, соответственно, будут доступны в веб-интерфейсе LogAnalizer.

 

Добавить комментарий

Защитный код
Обновить