Jump to content
Калькуляторы

syslog-ng не создаёт индексы в БД

Коллеги, добрый день.

После настройки 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));

 

То всё проходит на ура.

Share this post


Link to post
Share on other sites

Коллеги, добрый день.

После настройки 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 by vseti

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this