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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.