boonya.info

Разбираем ваш access.log

Пришлось мне давече “воевать” с перегрузкой на моем сервере. Ничто не предвещало беды, как говорится, но график использования CPU ощутимо полез вверх. Посещение сайтов, хостящихся на этой железке, было как обычно никакое, значит это здесь не причем. То есть нужно было копать глубже. Начал копать…

Открыл access.log файл одного из сайтов, но в нем огромная куча записей и как разобраться в том откуда приходит большое количество запросов не ясно. Стал гуглить подходящие bash команды и спустя некоторое время собрал вот такую штуковину:

cat access.log | cut -d' ' -f1,7 | sort | uniq -c | sort -n

Сие чудо состоит из пяти отдельных инструкций, которые вместе позволяют увидеть количество запросов с какого IP адреса приходилось на какой ресурс.

И так по порядку:

  1. cat access.log - читает и выводит в STDOUT содержимое файла;

  2. cut -d' ' -f1,7 - разбивает каждую строку на сегменты с разделителем “пробел” и возвращает только 1-й и 7-й сегменты. В моем случае - это IP адрес и ресурс соответственно;

  3. sort - сортирует строки;

  4. uniq -c - удаляет повторяющиеся с параллельным их подсчетом;

  5. 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 пытаются нати какой нибудь случайно забытый бекап.

В общем, принимаем соответствующие меры на собственное усмотрение.

16.04.2015