Перейти к содержимому
Калькуляторы

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));

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

После настройки 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, удаляю, из пакета сохранённого у себя ставлю старый, закидываю рабочий конфиг и базу и всё.

Изменено пользователем vseti

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.