Author Topic: syslog-ng не создает индексы в БД  (Read 3926 times)

0 Members and 1 Guest are viewing this topic.

Offline boombastic

  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
syslog-ng не создает индексы в БД
« 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));

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

Offline zhenya

  • Administrator
  • Full Member
  • *****
  • Posts: 215
  • Karma: +14/-5
Re: syslog-ng не создает индексы в БД
« Reply #1 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)")
« Last Edit: September 12, 2015, 11:20:05 by zhenya »

Offline boombastic

  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
Re: syslog-ng не создает индексы в БД
« Reply #2 on: September 21, 2015, 16:05:05 »
Нифига не получилось.
Вообщем я забил и вставил bash скрипт с SQL-запросом на создание индекса в crontab.