Tomsk Sysadmins Forum

Unix => Администрирование => Topic started by: boombastic on September 12, 2015, 01:45:34

Title: syslog-ng не создает индексы в БД
Post by: boombastic on September 12, 2015, 01:45:34
Коллеги, добрый день.
После настройки 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));

То всё проходит на ура.
Title: Re: syslog-ng не создает индексы в БД
Post by: zhenya on September 12, 2015, 11:16:55
А если убрать весь список колонок и добавлять по одной  ?

есть подозрение, что оно делает все внутри одной транзакции и что-то фейлится.. и откатывает все.


п.с. в примерах указывают для text полей тип и размер. columns("datetime timestamp with time zone", "host varchar(32)", "program varchar(16)", "pid varchar(16)", "message varchar(200)")
Title: Re: syslog-ng не создает индексы в БД
Post by: boombastic on September 21, 2015, 16:05:05
Нифига не получилось.
Вообщем я забил и вставил bash скрипт с SQL-запросом на создание индекса в crontab.