Назад | Перейти на главную страницу

Настройка MariaDB для входа в mysql.log с помощью rsyslog

Я немного озадачен - я упускаю кое-что очевидное. Недавно я переключился с mySQL на mariaDB. Пока все работает - кроме лога, как я сегодня понял.

Все журналы mariaDB помещаются в /var/log/daemon.log-logfile вместо /var/log/mysql.log - и я не могу, хоть убей, понять почему.

Итак, согласно my.cnf mariadb

# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# we do want to know about network errors and such
log_warnings            = 2

ведение журнала настраивается в /etc/mysql/conf.d/mysqld_safe_syslog.cnf. Этот файл содержит эту строку:

[mysqld_safe]
syslog
syslog-facility = mysql

Итак, хорошо - все должно быть хорошо, правда? Но ps -ef | grep logger показывает:

logger -t mysqld -p daemon.error

Ну и что? Зачем? Я правда не понимаю, зачем он забирает «демонический» объект? Ладно, копнув немного глубже - я нашел следующее. При попытке проверить ведение журнала, вызвав сам регистратор, я получаю следующее:

$> logger -p mysql.error test
logger: unknown facility name: mysql.

Хорошо, подумал я, хотя для меня это не имеет никакого смысла, просто пока используйте local1. Но при этом изменив значение в mysqld_safe_syslog.cnf на

syslog-facility = local1

ровно ничего не меняет:

$> ps -ef|grep logger
logger -t mysqld -p daemon.error

Я огляделась, но не нашла никакой достоверной информации по этой теме. Можете ли вы помочь мне? Как мне заставить mariadb регистрироваться в другом месте?

Что ж, это было несложно - мой скрипт инициализации сломался:

# priority can be overriden and "-s" adds output to stderr
ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mysql -i"

Поменял и все нормально. Не подумал о том, чтобы на самом деле проверить скрипт инициализации ... ну ... в следующий раз;)

Для систем с systemd нам нужно будет установить переопределение для отправки журнала в syslog с помощью следующих директив

`[Service]
 StandardOutput=syslog
 StandardError=syslog
 SyslogFacility=local5
 SyslogLevel=err`

использовать systemctl edit mariadb для редактирования запуска mariadb. Затем переместите все правила селектора из /etc/rsyslog.conf to /etc/rsyslog.d/rules.conf (примечание: это позволяет избежать дублирования журналов из-за правил выбора rsyslog по умолчанию), внутри /etc/rsyslog.d/rules.conf установите следующее содержимое

#custom mariDB logging
if $syslogfacility-text == 'local5' or $programname == 'mysqld-scl-helper' or $programname == 'mysqld*' then {
        action(type="omfile" file="/var/log/mariadb/mariadb-error.log")
        action(type="omfwd" Target="syslogserver.com" Port="514" Protocol="tcp")
        *.* stop
}

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local5.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

Наконец, вам нужно будет прокомментировать log-error из конфигурации mariadb, поскольку она может помешать отправке полных сообщений журнала на удаленный сервер системного журнала.