В этой заметке я покажу как развернуть сервер для централизованного сбора и анализа логов под операционной системой 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@

Устанавливаем пароль на пользователя root для MySQL

 

Подтверждаем его введя снова.

Теперь научим 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.

Сконфигурируем базу rsyslog-mysql

 

Пароль указываю такой же — 712mbddr@

dbconfig-common: writing config to /etc/dbconfig-common/rsyslog-mysql.conf

Пароль указываю такой же — 712mbddr@

 

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

Далее мы научим наш сервер принимать логи по сети.

Для этого предварительно создадим резервную копию, после редактируем файл /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

 

Вот на этом, собственно, настройка сервера сбора логов закончена.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru