Разбираем ваш access.log
Пришлось мне давече "воевать" с перегрузкой на моем сервере. Ничто не предвещало беды, как говорится, но график использования CPU ощутимо полез вверх. Посещение сайтов, хостящихся на этой железке, было как обычно никакое, значит это здесь не причем. То есть нужно было копать глубже. Начал копать...
Открыл access.log
файл одного из сайтов, но в нем огромная куча записей и как разобраться в том откуда приходит большое количество запросов не ясно. Стал гуглить подходящие bash
команды и спустя некоторое время собрал вот такую штуковину:
1cat 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
- сортирует результат;
В итоге имеем примерно такой вывод:
15 72.46.135.146 /.7z
25 72.46.135.146 /backup.tar.bz2
35 72.46.135.146 /site.com.rar
45 72.46.135.146 /site.com.zip
55 72.46.135.146 /site.tar.gz
66 176.36.80.39 /robots.txt
76 217.69.133.217 /robots.txt
86 24.114.29.162 /administrator/index.php
918 136.243.5.215 /robots.txt
10234 46.118.154.195 /administrator/index.php
А это уже дает понимание того, что с адреса 46.118.154.195
долбятся в админку больше чем кто либо. А с адреса 72.46.135.146
пытаются нати какой нибудь случайно забытый бекап.
В общем, принимаем соответствующие меры на собственное усмотрение.