Введение
В этом проекте вы научитесь выполнять анализ логов на сервере Nginx. Вы получите ценную информацию из логов, например, топ-IP адресов по количеству доступов, IP адресов, которые accessed сервер не менее 10 раз, наиболее часто запрашиваемых запросов и адресов запросов с статусом 404.
🎯 Задачи
В этом проекте вы научитесь:
- Как получить 5 IP адресов с наибольшим количеством доступов за определенную дату
- Как найти все IP адреса, которые accessed сервер не менее 10 раз в заданном диапазоне дат
- Как получить десять наиболее часто запрашиваемых запросов из файла логов, исключая статические файлы и ресурсы
- Как записать все адреса запросов с статусом 404 из файла логов
🏆 Достижения
После завершения этого проекта вы сможете:
- Анализировать и извлекать полезную информацию из логов доступа Nginx
- Автоматизировать задачи анализа логов с использованием shell-скриптов
- Разбираться и применять общие методы анализа логов, такие как фильтрация, сортировка и подсчет
- Управлять и организовывать результаты анализа в структурированном виде
Получить 5 IP-адресов с наибольшим количеством доступов с 10 апреля 2015 года
В этом шаге вы научитесь получать 5 IP адресов с наибольшим количеством доступов из файла access.log от 10 апреля 2015 года. Следуйте шагам ниже, чтобы выполнить этот шаг:
- Откройте терминал и перейдите в директорию
/home/labex/project. - Используйте следующую команду, чтобы получить 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.
- Проверьте содержимое файла
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 года. Следуйте шагам ниже, чтобы выполнить этот шаг:
- Используйте следующую команду, чтобы найти все 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.
- Проверьте содержимое файла
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, исключая статические файлы, изображения или подобные ресурсы. Следуйте шагам ниже, чтобы выполнить этот шаг:
- Используйте следующую команду, чтобы получить десять наиболее часто запрашиваемых запросов из файла логов:
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.
- Проверьте содержимое файла
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. Следуйте шагам ниже, чтобы выполнить этот шаг:
- Используйте следующую команду, чтобы записать все адреса запросов с статусом 404 из файла логов в файл
output4:
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq > output4
Эта команда делает следующее:
grep ' 404 ' access.log: Фильтрует файл логов, чтобы включать только строки, содержащие код статуса 404.awk '{print $7}': Извлекает адрес запроса (седьмой столбец) из каждой строки лога.sort: Сортирует адреса запросов.uniq: Удаляет любые дублирующиеся адреса запросов.> output4: Перенаправляет вывод в файлoutput4.
- Проверьте содержимое файла
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, чтобы улучшить свои навыки.



