Skip to content

DKuzibaev/log_analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Log Analyzer

Описание

Скрипт analyze_logs.sh — это инструмент для анализа логов веб-сервера, который обрабатывает файл access.log и создает отчет с полезной статистикой. Скрипт написан на Bash с использованием утилиты awk для обработки данных.

Что делает скрипт:

  1. Подсчитывает общее количество запросов в логе.
  2. Определяет количество уникальных IP-адресов, с которых поступали запросы.
  3. Анализирует количество запросов по HTTP-методам (GET, POST и т.д.).
  4. Находит самый популярный URL (по количеству запросов).
  5. Сохраняет отчет в текстовый файл report.txt.

Требования

  • Операционная система: Linux/Unix (скрипт использует Bash).
  • Утилиты:
    • bash
    • awk (для обработки логов)
    • 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)

Установка

  1. Скопируйте скрипт analyze_logs.sh в нужную директорию.
  2. Убедитесь, что у скрипта есть права на выполнение:
    chmod +x analyze_logs.sh
  3. Поместите файл access.log в ту же директорию, где находится скрипт.

Использование

Запустите скрипт из командной строки:

./analyze_logs.sh

Скрипт обработает файл access.log и создаст отчет в файле report.txt. После выполнения вы увидите сообщение:

Отчет сохранён в файле report.txt

Пример

Входные данные (access.log)

Предположим, у вас есть файл 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)

После выполнения скрипта в файле report.txt будет следующий отчет:

Отчет о логе веб-сервера
=========================
Общее количество запросов: 6
Количество уникальных IP-адресов: 4

Количество запросов по методам:
5 GET
1 POST

Самый популярный URL: 3 /index.html 

Вывод в консоль

После выполнения скрипта в консоли будет выведено:

Отчет сохранён в файле report.txt

Возможные проблемы

  1. Файл access.log не найден: Если файл access.log отсутствует в текущей директории, скрипт завершится с ошибкой, и в report.txt будет записано:
    Файл access.log не найден!
    
  2. Некорректный формат логов: Если формат логов отличается от ожидаемого, скрипт может не извлечь данные корректно. В таком случае в разделе "Самый популярный URL" будет указано:
    Самый популярный URL: не удалось определить (возможно, некорректный формат лога)
    

Примечания

  • Скрипт автоматически убирает параметры запроса из URL (например, /index.html?param=value будет обработан как /index.html).
  • Для подсчета уникальных IP-адресов, методов и URL используется утилита awk, что делает обработку быстрой даже для больших логов.

Автор

Скрипт создан в рамках учебного проекта по курсу "Data Engineer с нуля до junior"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages