Syslog-ng MySQL

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

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

В syslog-ng есть возможность передавать логи на обработку внешним программам. Соответвенно, запись в БД на самом деле - передача данных на вход sql-клиента (pipe нужно создать предварительно)

# mkfifo /etc/syslog-ng/mysql.pipe


# Log to aradia  SQL
destination d_mysql_aradia_table_switch_log {
              program("/usr/bin/mysql -h my.host.net  --user=syslog_user --password='syslog_password' syslog < /etc/syslog-ng/mysql.pipe");
              pipe ("/etc/syslog-ng/mysql.pipe"
              template("INSERT INTO switch_log  (host, facility, priority, level, tag, date, time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL','$TAG','$YEAR-$MONTH-$DAY', '$HOUR:$MIN
")
              template-escape(yes));
};

Обратить внимание на перенос строки в темплейте. Без него работать не будет.

Note: Из проблем можно отметить, что в случае краша удаленного MySQL fifo накапливает запросы на что расходуется память. У меня это вызвало отказ syslog
[4687242.151816] Out of Memory: Kill process 3536 (mysqld) score 5345 and children.
[4687242.151824] Out of memory: Killed process 3536 (mysqld).
[4687242.334453] Out of Memory: Kill process 3540 (mysqld) score 5345 and children.
[4687242.334465] Out of memory: Killed process 3540 (mysqld).
[4687242.334897] Out of Memory: Kill process 4076 (php-cgi) score 5301 and children.
[4687242.334905] Out of memory: Killed process 4263 (php-cgi).
[4687242.345109] Out of Memory: Kill process 4076 (php-cgi) score 3976 and children.
[4687242.345120] Out of memory: Killed process 4264 (php-cgi).
[4687242.354943] Out of Memory: Kill process 4076 (php-cgi) score 2650 and children.
[4687242.354955] Out of memory: Killed process 4076 (php-cgi).