Так что кто-то в Китае просто любит злоупотреблять дерьмом с моего сайта сетевых инструментов на yougetsignal.com.
Я пытался проанализировать свои файлы access.log, чтобы понять, что именно им нравится. Скорость большинства служб на моем сайте ограничена с использованием вызовов MySQL для записи истории использования, и по большей части это отличный способ обуздать чрезмерное использование. Время от времени и некоторое время они будут использовать тонну IP-адресов, чтобы задействовать сервис, чтобы избежать ограничения скорости IP.
Я поигрался с этими двумя командами для анализа моего файла Apache access.log:
sudo cat access.log | awk '{print $1}' | sort | uniq -c |sort -n
// Output sample:
// 3453 83.251.250.130
// 3888 79.136.28.38
// 4268 94.75.220.77
// 7116 61.147.122.183
и
sudo tail -50000 access.log | awk '{print $1}' | sort | uniq -c |sort -n
// Output sample:
// 276 66.249.68.86
// 365 155.212.251.138
// 1093 61.147.122.183
И наконец:
awk '{print $7}' access.log|cut -d? -f1|sort|uniq -c|sort -nk1|tail -n10
// Output sample:
// 15405 heavy-use-file.php
// 22339 heavy-use-file.php
// 218121 very-heavy-use-file.php
Последнее, что мне нужно, - это что-то, что свяжет вместе счетчики доступа, IP-адреса и файлы. Можно ли написать команду оболочки, которая будет показывать мне IP-адреса, которые сделали больше всего запросов, и, в частности, какой файл они запрашивали по убыванию по счетчику? Я не мастер Linux, поэтому обращаюсь за помощью.
Как насчет :
awk '{print $1,$7}' access.log | cut -d? -f1 | sort | uniq -c |sort -nr
Вы также видели AWStats ? Очень круто анализировать все данные из ваших файлов журналов
Apachetop твой друг. Он предоставляет вам вид, похожий на top
команда, но для журнала доступа Apache. Можно отсортировать просмотр по количеству просмотров, килобайтам и так далее.
Вы можете использовать его в режиме реального времени или скормить ему старый журнал.