| |
| 1.1, Skif, 17:50, 04/05/2006 [ответить] [смотреть все]
| +/– |
Так, мелкие замечания:
month varchar(10), day char(2) -почему не заменить на тип date имхо, разумнее, тем более парсинг не займет много времени %hash даст спасенье. Да и процес сравнения для MySQL пойдет легче и быстрее.
При мелкой нагрузке - тоесть редких выборках - такая база нормально дышать будет. При большой - активное составление отчетов и прочая... Касательно ключей - даже не знаю что сказать. Скорее разумнее сделать индексацию по rcpt_to и mail_from + size писем, введя в качестве primary key что-то типа id поля, с auto encrement. Почему так? Потому что ключами(индексами) надо делать поля по которым выбираются данные, а не те которые выбираются. Если педположить, что интересует конкретно время прохождения письма от pupkin@domen к vasia@domen2, тогда это разумно...Но здесь претензии скользки по определению - надо решать на этапе проектирование БД, что с ней делать будут.
А так в принципе, ничего... |  | | |
| 1.3, Algor, 07:10, 05/05/2006 [ответить] [смотреть все]
| +/– |
Чтобы опыту набраться, можно и такие скрипты писать, для реальных же задач даже незнаю.
У меня на релее около 50к писем в день и около 2к пользователей которые эти письма пишут, но задачи возникают как правило:
1.) посмотреть доставилось ли письмо от одного пользователя к другому (в основном за сегодняшний день, и раза три было посмотреть за неделю)
2.) какие письма были от такого то пользователя и кому
3.) сколько спама и вирусов отсеилось
4.) какой общий объем почты ушел и пришел.
1,2,3 решаются с помощью простых sh скриптов (4 строчки скрипт), время выполнения которых до 10 сек
3,4 решаются с помощью pflogsumm |  | | |
| 1.4, Сергей, 07:33, 05/05/2006 [ответить] [смотреть все]
| +/– | |
Согласен с Algor
Когда логи сервака занимают по 300-400 метров в день, особо с БД не поработаешь. Plain-text парсить гораздо эффективнее с точки зрения использования ресурсов системы.
Я даже не представляю, сколько perl отожрет памяти, если ему скормить достаточно большой лог. |  | | |
| 1.6, Vershinin Egor, 08:11, 05/05/2006 [ответить] [смотреть все]
| +/– |
Я тестировал эту программу на логах в 2 Мб и 25 Мб. Без записи в БД, со сбросом информации в файл:
./maillogs > mail.txt эта программа отрабатывала лог за 2 секунды (увеличение размера лога в 10 раз на скорости не сказалось).
Был бы очень признателен, если ы кто-нибудь протестировал прогу на больших журналах. |  | | |
| 1.7, Сергей, 08:31, 05/05/2006 [ответить] [смотреть все]
| +/– | |
to Vershinin Egor
Прогоню попробую...
Но смысла в этом нет. Для больших логов гораздо нужнее утилиты выбора конкретной информации (поиск следов конкретного письма).
Кстати, сколько занимает база для лога в 25 мегабайт? |  | | |
| 1.9, Kuzmich, 08:49, 05/05/2006 [ответить] [смотреть все]
| +/– |
1. Интересно как поведет себя скрипт, если в конец файла /var/log/maillog будут дописываться данные, и смогут ли они туда вобще дописываться при открытом файле.
2. Выполнение скрипта лучше поставить в logrotate, а не в cron, и после того как журнал ротэйтнулся, тогда первый вопрос отпадает сразу. |  | | |
| 1.10, Сергей, 08:56, 05/05/2006 [ответить] [смотреть все]
| +/– | |
to Vershinin Egor
ниче он у меня в логах не обнаружил:
21.03.2006 23:59:59 KRAT xxx.xxx.xxx [info] postfix/qmgr[11146]: [ID 197553 local1.info] 814DB24912: removed
пробежался по файлу и все
это все из-за split на самом деле, формат логов может разниться, поэтому нехорошо привязываться к своему логу |  | | |
| 1.15, Жириновский, 20:46, 07/09/2008 [ответить] [смотреть все]
| +/– | |
Здравствуйте товарищи!
а как можно брать каждные 2 минуты и вставлять их в таблицу?
пример:
1) открывайт файло логов
2) блокируем файл для записи других прграмм
3) переносим в СУБД
4) очищаем файл
5) разблориуем файл
такая схема реализации подойдет?
|  | | |
| 1.18, Watcher, 08:44, 13/01/2009 [ответить] [смотреть все]
| +/– |
Я у себя сдела primary key
month
day
time
mailfrom
rcptto,
а то иначе теряются записи,(при вставке указывает на дублирующие записи), так как за секунду может быть несколько писем., Также в таблицу не вносятся записи, если письмо посылалось копией кому-либо еще.
|  | | |
| 1.19, Avolon, 13:01, 21/01/2009 [ответить] [смотреть все]
| +/– |
при обработке выдает
DBD::mysql::st execute failed: Column 'month' cannot be null at ./log.pl line 55.
Что делать то???
|  | | |
| 1.20, Серга, 20:42, 20/04/2010 [ответить] [смотреть все]
| +/– |
to Avolon:
попробуй убери $rec{$id}->{'client'} ne '127.0.0.1'
вместо етого ип пропиши како-то левый...
|  | | |
|
|