2.19.2.3. Аналіз логів консольними командами
Аналізувати логи консольними командами можна на хостингу або на локальному ПК:
- Скачайте логи собі на ПК.
- За допомогою файл-менеджера або будь-якого 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