[РЕШЕНО] syslog-ng с записью в БД MySQL - постоянно падает
Выделенный log сервер для централизованного сбора журналов со всех железок.
Gentoo Linux с ядром 3.10.7-gentoo, x86_64, на процессоре AMD A10-5700.
syslog-ng v3.4.2, MySQL v5.1.70.
Работает без нареканий, параллельно на нем крутится еще ряд служб, отношения к делу не имеющих.
syslog-ng тоже работал исправно, пока не решили добавить функционал записи всех журналов еще и в БД (чтобы потом можно было использовать LogAnalyzer для просмотра)
В конфиг syslog-ng добавлены следующие блоки:
# MySQL database for LogAnalyzer in MonitorWare format destination d_mysql { sql ( type ( mysql ) host ( "192.168.102.29" ) username ( "loganalyzer" ) password ( "***********" ) database ( "loganalyzer" ) table ( "SystemEvents" ) columns ( "ID int unsigned not null auto_increment primary key", "ReceivedAt datetime NULL", "DeviceReportedTime datetime NULL", "Facility smallint NULL", "Priority smallint NULL", "FromHost varchar(60) NULL", "Message text", "InfoUnitID int NULL", "SysLogTag varchar(60)", "CustomerID bigint", "NTSeverity int NULL", "Importance int NULL", "EventSource varchar(60)", "EventUser varchar(60) NULL", "EventCategory int NULL", "EventID int NULL", "EventBinaryData text NULL", "MaxAvailable int NULL", "CurrUsage int NULL", "MinUsage int NULL", "MaxUsage int NULL", "EventLogType varchar(60)", "GenericFileName VarChar(60)", "SystemID int NULL" ) values ( "0", "$R_YEAR-$R_MONTH-$R_DAY $R_HOUR:$R_MIN:$R_SEC", "$S_YEAR-$S_MONTH-$S_DAY $S_HOUR:$S_MIN:$S_SEC", "$FACILITY_NUM", "$LEVEL_NUM", "$HOST", "$MSGONLY", "1", "$MSGHDR", "0", "0", "0", "", "", "0", "0", "", "0", "0", "0", "0", "", "", "0" ) indexes ( "ID", "ReceivedAt", "Facility", "Priority", "FromHost", "SysLogTag" ) ); };
и
# DB for LogAnalyzer log { source ( s_local ); source ( s_tcp514 ); source ( s_udp514 ); source ( s_tcp51400 ); source ( s_udp51400 ); rewrite ( r_subst_router ); destination ( d_mysql ); };
Если запускаем syslog-ng со "старым" конфигом (без этих блоков) - работает "на ура". Подсовываем "новый" конфиг (добавлены только эти два блока, причем все перечисленные в log source и rewrite используются в других конструкциях log) - syslog-ng начинает постоянно падать. Причем нигде в журналах причин падения не видно, и даже сами факты падения можно отследить только косвенно - в журнале самого syslog-ng с интервалами 10-50 секунд появляются строки syslog-ng starting up
с последующими сообщениями, что к нему подконнектились другие серверы. При этом сообщений об остановке нет (т.е. по всей видимости syslog-ng падает, не успев и мявкнуть, после чего его поднимает служба supervising syslog-ng).
Вот теперь сижу и думаю - в какую сторону копать, чтобы найти причину падений.
Да, между падениями записи в БД пишутся нормально.
- Для комментирования войдите или зарегистрируйтесь
man syslog-ng syslog-ng -d -e
man syslog-ng
syslog-ng -d -e ....
Вскрытие показало, что
Вскрытие показало, что падения происходили совсем не из-за мускуля, а из-за ошибки в коде rewrite.
Вылечилось обновлением на последнюю версию 3.4.7 (предварительно пришлось размаскировать, т.к. она еще не stable в репозитории)