Запись логов в MySQL

Взаимодействие с MySQL в RSyslog осуществляется через загружаемый модуль "ommysql". Прежде чем использовать данный плагин, нужно проверить его наличие в системе:

host# dpkg -l | grep rsyslog

Если его нет, то устанавливаем:

host# apt-get install rsyslog-mysql

Переходим к конфигурации rsyslog-а (/etc/rsyslog.conf).

Указываем rsyslog-у на то что необходимо загрузить нужный нам модуль:

$ModLoad ommysql

Для других баз данных необходимо использовать другие плагины (например, ompgsql для PostgreSQL).

Далее указываем шаблон, который является запросом SQL, о чём мы указываем опцией шаблона "sql":

$template imya_shablona,"insert into db.table(time, host, msg) \ values ('%timestamp%', '%hostname%', '%msg%')",sql

Далее указываем что мы хотим записывать и куда:

*.* :ommysql:dbserver,dbname,dbuserid,dbpassword;imya_shablona

где:

dbserver
IP-адрес, либо доменное имя сервера, на котором запущен MySQL-сервер
dbname
имя БД, в таблицу(цы) которой будут записываться логи
dbuserid
имя пользователя БД, от которого будет идти запись
dbpassword
пароль пользователя "dbuserid"

Перезагружаем rsyslog, лезем в MySQL и наслаждаемся результатом:

# /etc/init.d/rsyslog restart

Если вдруг результат оставляет желать лучшего, то лезем в лог rsyslog-а (/var/log/syslog) и смотрим выдаваемые им ошибки:
- не установлен пакет rsyslog-mysql
... rsyslogd: could not load module '/usr/lib/rsyslog/ommysql.so', dlopen: /usr/lib/rsyslog/ommysql.so: cannot open shared object file: No such file or directory

- в шаблоне не указана опция "sql"
... rsyslogd: Action disabled. To use this action, you have to specify the SQL or stdSQL option in your template!

- в селекторе не указан шаблон