Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Лабораторная работа 3: Анализ логов сервера

Задача

Вам предоставлен access.log одного из серверов NASA (скачать). Это текстовый файл, каждая строка которого имеет следующий формат: $remote_addr - - [$local_time] “$request” $status $bytes_send

  • $remote_addr - источник запроса.
  • $local_time - время запроса.
  • $request - запрос.
  • $status - статус ответ.
  • $bytes_send - количество переданных в ответе байт. Например: 198.112.92.15 - - [03/Jul/1995:10:50:02 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985

Требования

  1. Подготовить список запросов, которые закончились 5xx ошибкой, с количеством неудачных запросов.
  2. Найти временное окно (длительностью параметризуются), когда количество запросов на сервер было максимально.

Примечания

  1. Для парсинга строк проще всего воспользоваться библиотеками. stdio.h и string.h стандартной библиотеки
  2. Про коды ответа можно почитать например вот тут.

Реализация

Программа поддерживает следующие опции:

  • --intervalMax [SECONDS] Ищёт время, когда за указанный интервал произошо больше всего ошибок. Если таких интервалов несколько, то программа выводит первый.
  • --printErrors \t Выводит в консоль все строки с кодом ошибки 5XX.
  • --printOnly [CODE] \t Выводит в консоль все строки с определённым кодом ошибки 5XX.
  • --help / -h Выводит справку по программе. Так же программа умеет обрабатывать случаи, когда аргумент дан больше одного раза или неизвестен, а так же когда строка не закончена.