Разбираем ваш access.log
Пришлось мне давече “воевать” с перегрузкой на моем сервере. Ничто не предвещало беды, как говорится, но график использования CPU ощутимо полез вверх. Посещение сайтов, хостящихся на этой железке, было как обычно никакое, значит это здесь не причем. То есть нужно было копать глубже. Начал копать…
Открыл access.log
файл одного из сайтов, но в нем огромная куча записей и как разобраться в том откуда приходит большое количество запросов не ясно. Стал гуглить подходящие bash
команды и спустя некоторое время собрал вот такую штуковину:
cat access.log | cut -d' ' -f1,7 | sort | uniq -c | sort -n
Сие чудо состоит из пяти отдельных инструкций, которые вместе позволяют увидеть количество запросов с какого IP адреса приходилось на какой ресурс.
И так по порядку:
cat access.log
- читает и выводит в STDOUT содержимое файла;cut -d' ' -f1,7
- разбивает каждую строку на сегменты с разделителем “пробел” и возвращает только 1-й и 7-й сегменты. В моем случае - это IP адрес и ресурс соответственно;sort
- сортирует строки;uniq -c
- удаляет повторяющиеся с параллельным их подсчетом;sort -n
- сортирует результат;
В итоге имеем примерно такой вывод:
5 72.46.135.146 /.7z
5 72.46.135.146 /backup.tar.bz2
5 72.46.135.146 /site.com.rar
5 72.46.135.146 /site.com.zip
5 72.46.135.146 /site.tar.gz
6 176.36.80.39 /robots.txt
6 217.69.133.217 /robots.txt
6 24.114.29.162 /administrator/index.php
18 136.243.5.215 /robots.txt
234 46.118.154.195 /administrator/index.php
А это уже дает понимание того, что с адреса 46.118.154.195
долбятся в админку больше чем кто либо. А с адреса 72.46.135.146
пытаются нати какой нибудь случайно забытый бекап.
В общем, принимаем соответствующие меры на собственное усмотрение.