Настройка Rsyslog для хранения журналов логов в базе данных Mysql

Thank you for reading this post, don't forget to subscribe!

Исполь­зо­ва­ние цен­тра­ли­зо­ван­но­го лог-сер­ве­ра для хра­не­ния логов очень удоб­но, когда мы име­ем раз­ви­тую инфра­струк­ту­ры сер­ве­ров. Но хра­нить жур­на­лы в фай­лах, хоть и на одном сер­ве­ре очень неудоб­но в плане ана­ли­за этих дан­ных. Иде­аль­ным реше­ни­ем будет хра­нить жур­на­лы в базе дан­ных, где мож­но выпол­нять намно­го более быст­рый поиск сооб­ще­ний для их даль­ней­ше­го ана­ли­за. Rsyslog име­ет моду­ли для рабо­ты с раз­ны­ми база­ми дан­ных. Расмот­рим при­мер настрой­ки хра­не­ния жур­на­лов в базе дан­ных на при­ме­ре СУБД Mysql.

Уста­но­вим необ­хо­ди­мые пакеты:

sudo yum install rsyslog-mysql mariadb-server

Настройка СУБД

Запус­ка­ем Mariadb

sudo systemctl start mariadb

Выпол­ним скрипт пер­во­на­чаль­ной настройки

mysql_secure_installation

После пер­во­на­чаль­ной настрой­ки СУБД, где мы созда­ли поль­зо­ва­те­ля root и зада­ли ему пароль, выпол­ним под­го­тов­ку БД к исполь­зо­ва­нию Rsyslog

Вме­сте с моду­лем были уста­нов­ле­ны вспо­мо­га­тель­ные инстру­мен­ты, кото­рые упро­ща­ют настройку.
В дирек­то­рии /usr/share/doc/rsyslog-8.24.0 хра­нить­ся скрипт, кото­рый создаст базу со все­ми необ­хо­ди­мы­ми для рабо­ты таблицами.

Запу­стим команду:

mysql -u root -p < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

Теперь, когда есть база сох­да­дим поль­зо­ва­те­ля с пра­ва­ми кото­ро­го будет про­ис­хо­дить даль­ней­шая рабо­та Rsyslog сер­ве­ра с СУБД:

Под­клю­ча­ем­ся к базе и выпол­ня­ем команду:

Настройка Rsyslog

Вклю­ча­ем воз­мож­ность полу­че­ния логов с уда­лен­ных сер­ве­ров и модуль для рабо­ты с базой данных

Пишем фильтр для обра­бот­ки логов при­ня­тых с уда­лен­но­го сер­ве­ра, будем их отправ­лять в базу

Ука­зы­ва­ем исполь­зо­ва­ние моду­ля mysql с дан­ны­ми для под­клю­че­ния к базе:

Пере­за­пус­ка­ем Rsyslog сервер

systemctl restart rsyslog

Про­из­во­дим настрой­ку на кли­ен­те, про­пи­сы­ва­ем отправ­лять логи на наш лог сервер

cat /etc/rsyslog.conf

Теперь про­ве­рим как это работает
С кли­ен­та выпол­ним коман­ду для отправ­ки тек­ста как лог сообщения

logger "Testing log messages"

Теперь на сер­ве­ре Rsyslog посмот­рим что запи­са­лось в базу

Настрой­ки рабо­та­ют, теперь мы смо­жем хра­нить и читать лог сооб­ще­ния из БД.