В статье Защита от DDOS — первые шаги был упомянут скрипт контроля LA, собственно который я успешно реализовал …
После написания он временами начал отрабатывать — и встал вопрос «Какой же именно виртуальный хост даёт нагрузку?»
Стандартные средства мониторинга нагрузки вроде ps -waux показывают только процессы грузящие систему — множественные httpd.
Как узнать какой же именно сайт создаёт нагрузку на сервер?
Для ответа на этот вопрос были установлены инструменты для мониторинга:
* mod_status — apache модуль с возможностью просмотра текущей нагрузки по виртуальным хостам
* MyTop: top для MySQL с возможностью просмотра какие именно запросы обрабатываются в данный момент к каким базам данных
Для сбора статистике в скрипте к mod_status я не придумал ничего кроме как дёргать его wget-ом c ключем -O для вывода результата в необходимый мне файл.
Для консольного запуска mytop используем ключ -b
В итоге для сбора статистики получилось такое:
1 2 3 |
ps —waux > ps—$(date +%Y%m%d%H%M) mytop —b > mytop—$(date +%Y%m%d%H%M) wget http://mod_status_server.ru:8080/modstatus/ -O wget-$(date +%Y%m%d%H%M) |
В принципе можно грузящий процесс выудить ps-ом и грепануть на его наличие логи.