boombastic Posted September 8, 2015 Posted September 8, 2015 Коллеги, добрый день. После настройки syslog_ng с хранением сообщений в БД столкнулся с такой проблемой что при ротации таблиц syslog_ng не создаёт индексы к таблице. Конфиг сислога выглядит как: source s_syslog { udp(ip(192.168.6.1) port(514)); }; destination d_mysql { sql(type(mysql) host("127.0.0.1") username("sysloglogin") password("syslogpasswd") database("syslogdb") table("messages_${R_YEAR}-${R_MONTH}-${R_DAY}") columns("datetime", "host", "program", "facility", "level", "message") values("${R_HOUR}:${R_MIN}:${R_SEC}", "$HOST", "$PROGRAM", "$FACILITY", "$LEVEL", "$MSGONLY") indexes("datetime", "host", "program", "facility", "level", "message") ); }; log { source(s_syslog); destination(d_mysql); }; ну и ротация логов выполняется постредством logrotate sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null || true endscript Таблица пересоздаётся каждый день , всё вроде бы нормально, однако когда я захожу в мускуль проверить show index from messages_2015_09_08 ; Empty set (0.00 sec) :( Хотя если сделать вручную что-нибудь типа dst_date=`date +%Y_%m_%d` CREATE INDEX index1 ON messages_$dst_date(facility(6), message(120)); То всё проходит на ура. Вставить ник Quote
vseti Posted September 17, 2015 Posted September 17, 2015 (edited) Коллеги, добрый день. После настройки syslog_ng с хранением сообщений в БД столкнулся с такой проблемой что при ротации таблиц syslog_ng не создаёт индексы к таблице. Конфиг сислога выглядит как: source s_syslog { udp(ip(192.168.6.1) port(514)); }; destination d_mysql { sql(type(mysql) host("127.0.0.1") username("sysloglogin") password("syslogpasswd") database("syslogdb") table("messages_${R_YEAR}-${R_MONTH}-${R_DAY}") columns("datetime", "host", "program", "facility", "level", "message") values("${R_HOUR}:${R_MIN}:${R_SEC}", "$HOST", "$PROGRAM", "$FACILITY", "$LEVEL", "$MSGONLY") indexes("datetime", "host", "program", "facility", "level", "message") ); }; log { source(s_syslog); destination(d_mysql); }; ну и ротация логов выполняется постредством logrotate sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null || true endscript Таблица пересоздаётся каждый день , всё вроде бы нормально, однако когда я захожу в мускуль проверить show index from messages_2015_09_08 ; Empty set (0.00 sec) :( Хотя если сделать вручную что-нибудь типа dst_date=`date +%Y_%m_%d` CREATE INDEX index1 ON messages_$dst_date(facility(6), message(120)); То всё проходит на ура. когда то тоже ставил syslog-ng ещё 2 версии с оболочкой php-syslog-ng по тупой статье в интернете была проблема в базе данных тоже, поправил, сейчас уже 4 года работает, перезаливаю каждые 3 месяца файл чистой базы данных, работает на ура. проблему по установке на сервер старой версии решаю так, ставлю новый syslog-ng, удаляю, из пакета сохранённого у себя ставлю старый, закидываю рабочий конфиг и базу и всё. Edited September 17, 2015 by vseti Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.