В этой заметке я покажу как развернуть сервер для централизованного сбора и анализа логов под операционной системой Ubuntu 12.04 который ляжет уже после в основу следующей заметки.
В Ubuntu 12.04 есть замечательный демон — rsyslog – в задачи которого входит сбор логов локально так и по сети. Для того, что бы эти логи можно было удобно смотреть и анализировать будем хранить их в базе данных — MySQL.
И так основная система:
ekzorchik@webserver:~$ uname -a && lsb_release -a
Linux webserver 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
Rsyslog – уже установлен в системе.
ekzorchik@webserver:~$ whereis rsyslog
rsyslog: /etc/rsyslog.d /etc/rsyslog.conf /usr/lib/rsyslog /usr/share/rsyslog
Устанавливаем MySQL:
ekzorchik@webserver:~$ sudo apt-get install mysql-server mysql-client
[sudo] password for ekzorchik:
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libnet-daemon-perl libplrpc-perl
mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server-5.5 mysql-server-core-5.5
Suggested packages:
libipc-sharedcache-perl libterm-readkey-perl tinyca mailx
The following NEW packages will be installed:
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libnet-daemon-perl libplrpc-perl
mysql-client mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5
mysql-server-core-5.5
0 upgraded, 13 newly installed, 0 to remove and 99 not upgraded.
Need to get 27.1 MB of archives.
After this operation, 97.3 MB of additional disk space will be used.
Do you want to continue [Y/n]?
При настройке введем пароль для пользователя root применительно к MySQL.
пароль от пользователя root для MySQL – 712mbddr@
Подтверждаем его введя снова.
Теперь научим rsyslog хранить свои данные (то есть все логи) в MySQL.
Для этого установим еще два пакета — syslog-mysql и rsyslog-relp
ekzorchik@webserver:~$ sudo apt-get install rsyslog-mysql rsyslog-relp
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
dbconfig-common librelp0
The following NEW packages will be installed:
dbconfig-common librelp0 rsyslog-mysql rsyslog-relp
0 upgraded, 4 newly installed, 0 to remove and 106 not upgraded.
Need to get 497 kB of archives.
After this operation, 2,138 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
В процессе настройки в MySQL будет создана база Syslog и потребуется ввести пароль для пользователя rsyslog.
Пароль указываю такой же — 712mbddr@
dbconfig-common: writing config to /etc/dbconfig-common/rsyslog-mysql.conf
Этот пароль тоже не забываем.
Далее мы научим наш сервер принимать логи по сети.
Для этого предварительно создадим резервную копию, после редактируем файл /etc/rsyslog.conf.
ekzorchik@webserver:~$ sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup
ekzorchik@webserver:~$ sudo nano /etc/rsyslog.conf
Раскомментируем в нем следующие строки:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
И, естественно, перезапустим сервис rsyslog
ekzorchik@webserver:~$ sudo service rsyslog restart
rsyslog stop/waiting
rsyslog start/running, process 3692
Научим сервер принимать сообщения через Reliable Event Logging Protocol.
Для этого создадим файл ekzorchik@webserver:~$ sudo nano /etc/rsyslog.d/relp.conf и внесем в него следующее:
$ModLoad imrelp
$InputRELPServerRun 20514
В случае, если поток логов будет чересчур большим, некоторые события могут потеряться, так как просто не успеют обработаться. Что бы такого не произошло настроим буферизацию сообщений.
Создадим каталог, в котором rsyslog будет хранить очередь сообщений
ekzorchik@webserver:~$ sudo mkdir -p /var/rsyslog/work
И добавим в ekzorchik@webserver:~$ sudo nano /etc/rsyslog.d/mysql.conf такие строки:
Было
$ModLoad ommysql
*.*:ommysql:localhost,Syslog,rsyslog,712mbddr@
Добавил
# 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
И снова перезапустим наш демон:
ekzorchik@webserver:~$ sudo service rsyslog restart
rsyslog stop/waiting
rsyslog start/running, process 3764
Вот на этом, собственно, настройка сервера сбора логов закончена.