Сервер централизованного сбора логов с серверов Windows и Linux на базе rsyslog и LogAnalizer
- Информация о материале
- Категория: Servers (ru)
- Опубликовано: 12.12.2011, 23:44
- Автор: Super User
- Просмотров: 4383
Во многих фирмах, особенно большого размера, возникает задача централизованного сбора и анализа логов. Для этого существует много разных продуктов — 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
И начинаем установку
Далее проверяется наличие и права доступа к файлу config.php
Для того, что бы была возможность создавать пользователей внутри LogAnalizer'а и раздавать им права доступа, выбираем Enable User Database — yes
Заполняем логин, пароль и имя базы, как мы их создали. То есть в моем случае имя базы LogAnalizerUsers
логин — la
пароль — la
Будьте внимательны с регистром символов! Он имеет значение!
На следующих двух шагах проверяется соединение с базой данных и в ней создаются соответствующие таблицы.
Далее создается административная учетная запись (я ее назвал admin)
Теперь мы описываем параметры соединения с базой rsyslog.
Вводим все параметры именно так, как показано на рисунке. Снова не забываем о том, что регистр символов имеет большое значение.
И, наконец, все. Настройка завершена.
Жмем Finish и смотрим логи в веб-интерфейсе.
Если что-то настроили не правильно, ничего страшного. Всегда можно провести настройку заново.
Для этого в каталоге /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.