Skip to content

ArkovKonstantin/log_pase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Парсер логов

Даны логи запросов сервера обслуживающего несколько доменных имен.
Кроме запросов в логе могут встречаться строки не являющиеся записями об обращении к серверу. Если строка является логом запроса к серверу, то она имеет следующую структуру:

[request_date] "request_type request protocol" response_code response_time  
  • request_date - дата выполнения запроса
  • request_type - тип запроса (GET, POST, PUT ...)
  • request - <схема>:[//[<логин>:<пароль>@]<хост>[:<порт>]][/]<URL‐путь>[?<параметры>][#<якорь>] https://ru.wikipedia.org/wiki/URL
  • protocol - протокол и версия протокола, по которому осуществлялся запрос HTTP/HTTPS/FTP ...
  • response_code - статус код, которым ответил сервер на запрос
  • response_time - время выполнения запроса сервером

Пример логов

[21/Mar/2018 21:32:09] "GET https://sys.mail.ru/static/css/reset.css HTTPS/1.1" 200 1090    
[21/Mar/2018 21:32:09] "GET https://corp.mail.ru/static/css/login.css HTTPS/1.1" 200 638    
help    
[21/Mar/2018 21:32:09] "GET https://sys.mail.ru/static/js/auth_error_message.js HTTPS/1.1" 200 1081    
[21/Mar/2018 21:53:10] "GET https://mail.ru/fitness/pay_list HTTP/1.1" 301 0    
ERROR [django.request:135] Internal Server Error: /fitness/pay_list/    
Traceback (most recent call last):    
  File "/root/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response    
    response = wrapped_callback(request, *callback_args, **callback_kwargs)    
  File "/root/fitness_pay/views.py", line 80, in show_pays    
    raise Exception    
Exception    
[21/Mar/2018 21:53:10] "GET https://corp.mail.ru/fitness/pay_list/ HTTP/1.1" 500 120426    
[21/Mar/2018 21:32:11] "GET https://mail.ru/static/js/jquery-go-top/go-top.png HTTP/1.1" 200 1845    

Цель задачи

Написать функцию, возвращающую список из количества использования топ 5 урлов, которые запрашивались у сервера.

Функция должна принимать дополнительные параметры:

  • ignore_files (bool) - игнорирует файлы (игнорируется весь лог, если в логе запрашивается фаил)
  • ignore_urls (list) - игнорирует урлы из переданного списка
  • start_at (datetime) - начать парсить логи начиная с указанной даты
  • stop_at (datetime) - закончить парсить логи на указанной дате
  • equest_type (string) - тип запроса, которые надо парсить ( остальные игнорируются)
  • ignore_www (bool) - игнорировать www перед доменом (лог учитывается, но отбрасывается www из url лога)
  • slow_queries (bool) - если True возвращает среднее значение в количестве миллисекунд (целую часть), потраченное на топ 5 самых медленных запросов к серверу (суммарное время ответов деленное на количество запросов)
    "# log_pase"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published