piped logging from Nginx to MySQL

Alex Vorona voron на amhost.net
Ср Дек 16 12:43:30 MSK 2009


16.12.2009 11:38, Ihalainen Nickolay wrote:
> 2009/12/16 Anton Yuzhaninov <citrin at citrin.ru>:
>> Ihalainen Nickolay wrote:
>>
>>> Вариант с tail конешно хорош, но зачем эти бешенные гигабайты писать на диск?
>>> gzip поможет с этой проблемой, однако, он будет дважды использовать
>>> cpu: для записи на диск и для чтения с него.
>> Запись логов из nginx на диск линейная, и в таком режиме можно писать много
>> создавая небольшую нагрузку на диск.
>>
>> А вот mysql на каждую строчку которую в него insert-ят будет делать кучу сиков и
>> создаст на диск нагрузку гораздо больше.
> сишный или перловый парсер лога вообще может на диск/базу не писать.
> Насколько я понимаю база нужна не для хранения, а для анализа. делая
> анализ на лету а не по крону можно сильно экономить процессор и
> дисковую полосу. запрещение | в логах это запрет стрелять, под
> предлогом, что выстрел в собственную ногу это опасно.
> 
> Хотя стрелять в ногу никто не запрещает:
> /etc/init.d/nginx stop
> rm /var/log/access.log
> mkfifo /var/log/nginx/access.log
> (tail -f /var/log/nginx/access.log | /usr/local/bin/logtomysql ) &
> /etc/init.d/nginx start
Если tail тут тормознётся записью в свой pipe или упадёт, то nginx замрёт на записи в 
fifo. Даже ддоса не надо.
> 
> опять же, что если хочется ловить типовые запросы или медленные? тогда
> 5% от всех записей вполне можно добавлять в базу используя кольцевой
> буфер и polling без задержек в nginx.
> или пайпы работают медленней чем файлы?
пайпы блокируют запись если не читать из пайпа. А файлы спокойно растут себе на диске.



Подробная информация о списке рассылки nginx-ru