2.25.4. Аналіз логів консольними командами

Аналізувати логи консольними командами можна на хостингу або на локальному ПК:

Для аналізу логів консольними командами на хостингу виконайте наступне:
  1. Скачайте логи собі на ПК.
  2. За допомогою файл-менеджера або будь-якого FTP-клієнтазавантажте викачані логи на хостинг в кореневій каталог хостинг-аккаунта.
  3. Якщо логи знаходяться в архівному файлі, розархівуйте їх за допомогою файл-менеджера .
  4. Використовуйте в терміналі консольні команди Наведені нижче.
Для аналізу логів консольними командами на локальному ПК, виконайте такі дії:
  1. Скачайте логи собі на ПК.
  2. Якщо логи знаходяться в архівному файлі, розархівуйте їх.
  3. Запустіть термінал на своєму ПК:
    • У Windows - потрібна наявність встановленого WSL або Cygwin. Якщо з їх установкою є складнощі, скористайтеся більш простим аналізом на хостингу .
    • В Linux - можна використовувати стандартний термінал.
    • У macOS - можна використовувати стандартний термінал .
  4. Використовуйте в терміналі консольні команди Наведені нижче.

Примітка

У всіх командах замість 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 
Зміст