Syslog-ng MySQL
Материал из noname.com.ua
Версия от 10:32, 24 июня 2010; Sirmax (обсуждение | вклад)
Запись логов в 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).