2.25.4. Анализ логов консольными командами
Анализировать логи консольными командами можно на хостинге или на локальном ПК:
- Скачайте логи себе на ПК.
- С помощью файл-менеджера или любого FTP-клиента загрузите скачанные логи на хостинг в корневой каталог хостинг-аккаунта.
- Если логи находятся в архивном файле, разархивируйте их с помощью файл-менеджера.
- Используйте в терминале консольные команды, представленные ниже.
- Скачайте логи себе на ПК.
- Если логи находятся в архивном файле, разархивируйте их.
- Запустите терминал на своём ПК:
- В Windows — требуется наличие установленного WSL или Cygwin. Если с их установкой есть сложности, воспользуйтесь более простым анализом на хостинге.
- В Linux — можно использовать стандартный терминал.
- В macOS — можно использовать стандартный терминал.
- Используйте в терминале консольные команды, представленные ниже.
Команды
access.log
указывайте название скачанного файла лога или полный путь к нему.
Коды ответа сервера в порядке убывания их количества:
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