Jump to content

Recommended Posts

Posted

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

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

 

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

  • 2 weeks later...
Posted (edited)

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

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

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.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.