Скрипт analyze_logs.sh — это инструмент для анализа логов веб-сервера, который обрабатывает файл access.log и создает отчет с полезной статистикой. Скрипт написан на Bash с использованием утилиты awk для обработки данных.
- Подсчитывает общее количество запросов в логе.
- Определяет количество уникальных IP-адресов, с которых поступали запросы.
- Анализирует количество запросов по HTTP-методам (GET, POST и т.д.).
- Находит самый популярный URL (по количеству запросов).
- Сохраняет отчет в текстовый файл
report.txt.
- Операционная система: Linux/Unix (скрипт использует Bash).
- Утилиты:
bashawk(для обработки логов)wc(для подсчета строк)
- Входной файл: Файл
access.logдолжен находиться в той же директории, где запускается скрипт, и иметь стандартный формат логов веб-сервера (например, Apache).
Скрипт ожидает, что файл access.log имеет стандартный формат логов веб-сервера, например:
192.168.1.1 - - [28/Jul/2024:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1234
Где:
$1— IP-адрес (например,192.168.1.1)$6— метод запроса (например,"GET)$7— URL (например,/index.html)
- Скопируйте скрипт
analyze_logs.shв нужную директорию. - Убедитесь, что у скрипта есть права на выполнение:
chmod +x analyze_logs.sh
- Поместите файл
access.logв ту же директорию, где находится скрипт.
Запустите скрипт из командной строки:
./analyze_logs.shСкрипт обработает файл access.log и создаст отчет в файле report.txt. После выполнения вы увидите сообщение:
Отчет сохранён в файле report.txt
Предположим, у вас есть файл access.log со следующим содержимым:
192.168.1.1 - - [28/Jul/2024:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1234
192.168.1.2 - - [28/Jul/2024:12:35:56 +0000] "POST /index.html HTTP/1.1" 200 567
192.168.1.3 - - [28/Jul/2024:12:36:56 +0000] "GET /index.html HTTP/1.1" 404 890
192.168.1.1 - - [28/Jul/2024:12:37:56 +0000] "GET /index.html HTTP/1.1" 200 1234
192.168.1.4 - - [28/Jul/2024:12:38:56 +0000] "GET /index.html HTTP/1.1" 200 432
192.168.1.2 - - [28/Jul/2024:12:39:56 +0000] "GET /index.html HTTP/1.1" 200 1234
./analyze_logs.shПосле выполнения скрипта в файле report.txt будет следующий отчет:
Отчет о логе веб-сервера
=========================
Общее количество запросов: 6
Количество уникальных IP-адресов: 4
Количество запросов по методам:
5 GET
1 POST
Самый популярный URL: 3 /index.html
После выполнения скрипта в консоли будет выведено:
Отчет сохранён в файле report.txt
- Файл
access.logне найден: Если файлaccess.logотсутствует в текущей директории, скрипт завершится с ошибкой, и вreport.txtбудет записано:Файл access.log не найден! - Некорректный формат логов:
Если формат логов отличается от ожидаемого, скрипт может не извлечь данные корректно. В таком случае в разделе "Самый популярный URL" будет указано:
Самый популярный URL: не удалось определить (возможно, некорректный формат лога)
- Скрипт автоматически убирает параметры запроса из URL (например,
/index.html?param=valueбудет обработан как/index.html). - Для подсчета уникальных IP-адресов, методов и URL используется утилита
awk, что делает обработку быстрой даже для больших логов.
Скрипт создан в рамках учебного проекта по курсу "Data Engineer с нуля до junior"