Анализ и оптимизация логов Nginx

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь выполнять анализ логов на сервере Nginx. Вы получите ценную информацию из логов, например, топ-IP адресов по количеству доступов, IP адресов, которые accessed сервер не менее 10 раз, наиболее часто запрашиваемых запросов и адресов запросов с статусом 404.

🎯 Задачи

В этом проекте вы научитесь:

  • Как получить 5 IP адресов с наибольшим количеством доступов за определенную дату
  • Как найти все IP адреса, которые accessed сервер не менее 10 раз в заданном диапазоне дат
  • Как получить десять наиболее часто запрашиваемых запросов из файла логов, исключая статические файлы и ресурсы
  • Как записать все адреса запросов с статусом 404 из файла логов

🏆 Достижения

После завершения этого проекта вы сможете:

  • Анализировать и извлекать полезную информацию из логов доступа Nginx
  • Автоматизировать задачи анализа логов с использованием shell-скриптов
  • Разбираться и применять общие методы анализа логов, такие как фильтрация, сортировка и подсчет
  • Управлять и организовывать результаты анализа в структурированном виде

Получить 5 IP адресов с наибольшим количеством доступов от 10 апреля 2015 года

В этом шаге вы научитесь получать 5 IP адресов с наибольшим количеством доступов из файла access.log от 10 апреля 2015 года. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Откройте терминал и перейдите в директорию /home/labex/project.
  2. Используйте следующую команду, чтобы получить 5 IP адресов с наибольшим количеством доступов от 10 апреля 2015 года:
grep '10/Apr/2015' access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 | awk '{print $2}' > output1

Эта команда делает следующее:

  • grep '10/Apr/2015' access.log: Фильтрует файл логов, чтобы включать только строки от 10 апреля 2015 года.
  • awk '{print $1}': Извлекает IP адрес (первый столбец) из каждой строки лога.
  • sort: Сортирует IP адреса.
  • uniq -c: Считает количество вхождений каждого IP адреса.
  • sort -rn: Сортирует IP адреса по количеству вхождений в порядке убывания.
  • head -5: Выбирает топ-5 IP адресов.
  • awk '{print $2}': Извлекает IP адрес (второй столбец) из отсортированного и подсчитанного вывода.
  • > output1: Перенаправляет вывод в файл output1.
  1. Проверьте содержимое файла output1, чтобы убедиться, что он содержит 5 IP адресов с наибольшим количеством доступов от 10 апреля 2015 года, по одному IP адресу в строке и без пустых строк.
216.244.66.249
216.244.66.231
140.205.225.185
140.205.201.39
140.205.201.32

Найти все IP адреса, которые accessed сервер не менее 10 раз между 11 апреля 2015 года

В этом шаге вы научитесь искать все IP адреса, которые accessed сервер не менее 10 раз между 11 апреля 2015 года. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Используйте следующую команду, чтобы найти все IP адреса, которые accessed сервер не менее 10 раз между 11 апреля 2015 года:
grep '11/Apr/2015' access.log | awk '{print $1}' | sort | uniq -c | awk '$1 >= 10 {print $2}' > output2

Эта команда делает следующее:

  • grep '11/Apr/2015' access.log: Фильтрует файл логов, чтобы включать только строки от 11 апреля 2015 года.
  • awk '{print $1}': Извлекает IP адрес (первый столбец) из каждой строки лога.
  • sort: Сортирует IP адреса.
  • uniq -c: Считает количество вхождений каждого IP адреса.
  • awk '$1 >= 10 {print $2}': Фильтрует IP адреса, которые имеют количество вхождений 10 или более, и выводит IP адрес (второй столбец).
  • > output2: Перенаправляет вывод в файл output2.
  1. Проверьте содержимое файла output2, чтобы убедиться, что он содержит все IP адреса, которые accessed сервер не менее 10 раз между 11 апреля 2015 года, по одному IP адресу в строке и без пустых строк.
108.245.182.93
123.127.3.30
140.205.201.39
216.244.66.231
216.244.66.249
218.75.230.17

Получить десять наиболее часто запрашиваемых запросов из файла логов

В этом шаге вы научитесь получать десять наиболее часто запрашиваемых запросов из файла access.log, исключая статические файлы, изображения или подобные ресурсы. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Используйте следующую команду, чтобы получить десять наиболее часто запрашиваемых запросов из файла логов:
grep -vE '(/robots.txt|\.js|\.css|\.png)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -10 | awk '{print $2}' > output3

Эта команда делает следующее:

  • grep -vE '(/robots.txt|\.js|\.css|\.png)' access.log: Фильтрует файл логов, чтобы исключить строки, содержащие /robots.txt, .js, .css или .png.
  • awk '{print $7}': Извлекает адрес запроса (седьмой столбец) из каждой строки лога.
  • sort: Сортирует адреса запросов.
  • uniq -c: Считает количество вхождений каждого адреса запроса.
  • sort -rn: Сортирует адреса запросов по количеству вхождений в порядке убывания.
  • head -10: Выбирает топ-10 адресов запросов.
  • awk '{print $2}': Извлекает адрес запроса (второй столбец) из отсортированного и подсчитанного вывода.
  • > output3: Перенаправляет вывод в файл output3.
  1. Проверьте содержимое файла output3, чтобы убедиться, что он содержит десять наиболее часто запрашиваемых запросов из файла логов, по одному адресу запроса в строке и без пустых строк.
/
/j_acegi_security_check
/favicon.ico
400
/xref/linux-3.18.6/
/pmd/index.php
/pma/index.php
/phpMyAdmin/index.php
/phpmyadmin/index.php
check.best-proxies.ru:80

Записать все адреса запросов с статусом 404 из файла логов

В этом шаге вы научитесь записывать все адреса запросов с статусом 404 из файла access.log в файл output4. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Используйте следующую команду, чтобы записать все адреса запросов с статусом 404 из файла логов в файл output4:
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq > output4

Эта команда делает следующее:

  • grep ' 404 ' access.log: Фильтрует файл логов, чтобы включать только строки, содержащие код статуса 404.
  • awk '{print $7}': Извлекает адрес запроса (седьмой столбец) из каждой строки лога.
  • sort: Сортирует адреса запросов.
  • uniq: Удаляет любые дублирующиеся адреса запросов.
  • > output4: Перенаправляет вывод в файл output4.
  1. Проверьте содержимое файла output4, чтобы убедиться, что он содержит все адреса запросов с статусом 404 из файла логов, по одному адресу запроса в строке и без дубликатов.
/about/
/cgi?2
/cgi-bin/cgiSrv.cgi
/clusters.jsf
/dfshealth.jsp
/dnieyraqcvtu
/favicon.ico
/ganglia/index.php
/hadoop/dfshealth.jsp
/history/linux-3.18.6/arch/ia64/include/asm/processor.h
/history/linux-3.18.6/arch/m68k/amiga/
/history/linux-3.18.6/arch/m68k/kernel/
/history/linux-3.18.6/arch/s390/include/asm/lowcore.h
/history/linux-3.18.6/arch/s390/kernel/entry64.S
/history/linux-3.18.6/arch/tile/kernel/intvec_64.S
/history/linux-3.18.6/arch/unicore32/include/asm/thread_info.h
/history/linux-3.18.6/arch/unicore32/include/asm/unistd.h
/history/linux-3.18.6/arch/x86/include/asm/processor.h
/history/linux-3.18.6/arch/x86/include/asm/unistd.h
/history/linux-3.18.6/arch/x86/kernel/entry_64.S
 ...
✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.