2.25.3. Анализ логов консольными командами

Анализировать логи консольными командами можно на хостинге или на локальном ПК:

Чтобы проанализировать логи консольными командами на хостинге, выполните следующее:
  1. Скачайте логи себе на ПК.
  2. С помощью файл-менеджера или любого FTP-клиента загрузите скачанные логи на хостинг в корневой каталог хостинг-аккаунта.
  3. Если логи находятся в архивном файле, разархивируйте их с помощью файл-менеджера.
  4. Используйте в терминале консольные команды, представленные ниже.
Чтобы проанализировать логи консольными командами на локальном ПК, выполните следующее:
  1. Скачайте логи себе на ПК.
  2. Если логи находятся в архивном файле, разархивируйте их.
  3. Запустите терминал на своём ПК:
    • В Windows — требуется наличие установленного WSL или Cygwin. Если с их установкой есть сложности, воспользуйтесь более простым анализом на хостинге.
    • В Linux — можно использовать стандартный терминал.
    • В macOS — можно использовать стандартный терминал.
  4. Используйте в терминале консольные команды, представленные ниже.

Коды ответа сервера в порядке убывания их количества:

awk '{print $9}' access.log | sort | uniq -c | sort -r

25 самых активных IP:

cat access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25

Количество запросов с каждого IP в порядке убывания:

cat access.log | awk '{print "requests from " $1}' | sort | uniq -c | sort -r

10 самых популярных Referer:

cat access.log | awk -F \" ' { print $4 } ' | grep -v '-' | sort | uniq -c | sort -rn | head -n 10

10 самых популярных User-Agent:

cat access.log | awk -F \" ' { print $6 } ' | sort | uniq -c | sort -rn | head -n 10

Общее количество запросов за день:

awk '{print $4}' access.log | cut -d: -f1 | uniq -c

Почасовое количество запросов за день:

  • Если лог содержит информацию только за один день:
    cat access.log | cut -d [ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c
  • Если лог содержит информацию за несколько дней (вместо DD/Mon подставьте нужный день месяца и первые три буквы названия месяца на английском):
    grep "DD/Mon" access.log | cut -d [ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

Поминутное количество запросов за указанный час указанного дня (вместо DD/Mon/YEAR:HH подставьте нужный день месяца, первые три буквы названия месяца на английском, год и час):

grep "DD/Mon/YEAR:HH" access.log | cut -d [ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c | awk '{ if ($1 > 10) print $0}'

Количество уникальных посетителей:

cat access.log | awk '{print $1}' | sort | uniq -c | wc -l

25 самых популярных URI:

cat access.log | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25

Список уникальных IP:

cat access.log | awk '{print $1}' | sort | uniq

Список уникальных IP с датой и временем по каждому запросу от них:

cat access.log | awk '{print $1 " " $4}' | sort | uniq

Список уникальных IP с датой, временем и методу по каждому запросу от них:

cat access.log | awk '{print $1 " " $4 " " $6}' | sort | uniq

Список уникальных IP с датой, временем и URI по каждому запросу от них:

cat access.log | awk '{print $1 " " $4 " " $7}' | sort | uniq
  • hosting/logs/console.txt
  • Последнее изменение: 2020/10/15 12:11
  • karlov