Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 18

Распарсить лог работы распределенных бэкэндов

27.04.2016, 08:57. Показов 2486. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Устраиваюсь на работу в одну компанию, так вот мне дали задание (сроки выполнения неделя) написать программу на Python по парсингу лога, будущий работодатель в курсе из моего резюме, что я не знаю Python да и вообще очень слаб в программировании, но не смотря на это мне все равно поставили задачу.

Имя входного файла: input .txt
Имя выходного файла: output. txt
Сервис состоит из фронтенда и бекендов. Бекенды бывают нескольких типов. Для увеличения отказоустойчивости бекенды одного типа реплицированы и составляют группу реплик (далее ГР). Бекенды из одной ГР одинаковы, и для формирования выдачи фронтенду достаточно получить от¬вет хотя бы с одного бекенда из каждой ГР. Фронтенд может сделать несколько попыток обращения к бекендам ГР, пока не получит результат.
У фронтенда есть три фазы обработки запроса:
1) Опрос бекендов
2) Мерджинг результатов, полученных с бэкендов
3) Отправка результатов пользователю
В случае, когда фаза опроса бекендов занимает слишком много времени, фронтенд может при¬нудительно завершить опрос и перейти к фазе мерджинга результатов с неполным набором данных. В процессе работы фронтенд пишет в лог файл события, возникающие при обработке запроса. Вам нужно по данному логу событий посчитать:
1. 95-й перцентиль времени обработки запросов фронтендом
2. Найдите 10 запросов, в которых фаза отправки результатов пользователю была максимальной. В качестве ответа выдайте 10 идентификаторов запросов.
3. Для каждого бекенда, отметившегося в логе, посчитайте количество обращений к нему, коли¬чество и типы ошибок, возникших при работе с ним.
4. Посчитайте количество запросов к фронтенду на которые фронтенд не смог собрать данные со всех ГР.

Формат входных данных
Входной файл состоит из строчек в формате: <время события> <идентификатор запроса на фронтенд> <тип события> [<дополнительные параметры>]
Разделителем полей выступает символ табуляции.
Строки отсортированы по времени события — UNIX timestamp в микросекундах. Идентификатор запроса это уникальное целое число. Отфильтровав лог по записям с выбран¬ным идентификатором запроса можно узнать всё об обработке соответствующего пользовательского запроса.
Типы событий:
StartRequest
Начало обработки запроса
BackendConnect
Установка tcp соединения с бекендом.
Дополнительные параметры: <номер ГР> <URL запроса на бекенд>
BackendRequest
Отправка запроса на бекенд. Дополнительные параметры: <номер ГР>
BackendOk
Отметка успешного получения ответа с бекенда. Работа с ГР завершается. Дополнительные параметры: <номер ГР>
BackendError
Ошибка работы с бекендом. Следует после BackendConnect или BackendRequest. Дополнительные параметры: <номер ГР> <строка с текстом возникшей ошибки>
StartMerge
Означает конец фазы опроса бекендов и начало фазы мерджа результатов.
Start SendResult
Означает конец фазы мерджа и начало отправки результата пользователю.
Finis hRequest
Конец обработки запроса.

Формат выходных данных
Выведите в свободной фоме ответ на поставленные вопросы.
Время обработки пользовательского запроса вычисляется как время между событиями StartRequest и FinishRequest. Подсмотреть, что такое 95-й перцентиль можно тут: ru.wikipedia.org/wiki/Квантиль
Время ответа пользователю можно вычислить как разницу времени между событиями Start SendResult и FinishRequest.
Бекенды, с которыми производилась работа можно узнать разобрав URL в событии BackendConnect. В качестве типа ошибки можно использовать строковое представление ошиб¬ки в событии BackendError.
Запросы, на которые ответили не все ГР не имеют событий BackendOK хотя бы для одной из своих ГР.
Система оценки
Мы ожидаем, что решение будет оформленно на Python 2.7.
Модно пользоваться любыми библиотеками с pypi, но не забудьте описать зависимости в pip-requirements.txt Также, мы будем признательны, если, при прочих равных, вы выберете pure python библиотеки себе в зависимости — нам это сильно упрощает проверку.
Вобщем случае событийный лог может быть большим, программа не должна зачитывать весь лог в память.
Постарайтесь оптимизировать свою программу по памяти и процессору.

И приложены несколько файлов с логами, вот примерные строчки одного из них:

1390137366792361 3 BackendConnect 9 http://backend9-011.yandex.ru:1612/search?
1390137366792367 3 BackendConnect 19 http://backend19-004.yandex.ru:1247/search?
1390137366792392 2 BackendConnect 5 http://backend5-008.yandex.ru:1611/search?
1390137366792407 3 BackendConnect 16 http://backend16-014.yandex.ru:1120/search?
1390137366792410 3 BackendConnect 1 http://backend1-006.yandex.ru:1924/search?
1390137366792421 2 BackendConnect 15 http://backend15-013.yandex.ru:1334/search?
1390137366792467 3 BackendConnect 17 http://backend17-011.yandex.ru:1197/search?
1390137366792469 3 BackendConnect 6 http://backend6-004.yandex.ru:1347/search?
1390137366792480 3 BackendConnect 11 http://backend11-013.yandex.ru:1457/search?
1390137366792481 3 BackendConnect 0 http://backend0-007.yandex.ru:1080/search?
1390137366792516 3 BackendConnect 3 http://backend3-007.yandex.ru:1203/search?
1390137366792517 4 StartRequest
1390137366792524 3 BackendConnect 8 http://backend8-006.yandex.ru:1373/search?
1390137366792622 3 BackendConnect 12 http://backend12-006.yandex.ru:1028/search?
1390137366792627 3 BackendConnect 4 http://backend4-009.yandex.ru:1959/search?
1390137366792662 3 BackendConnect 10 http://backend10-013.yandex.ru:1888/search?
1390137366792731 3 BackendConnect 5 http://backend5-001.yandex.ru:1268/search?
1390137366792745 3 BackendConnect 18 http://backend18-004.yandex.ru:1605/search?
1390137366792896 3 BackendConnect 14 http://backend14-006.yandex.ru:1730/search?
1390137366794324 4 BackendConnect 13 http://backend13-006.yandex.ru:1103/search?
1390137366794346 4 BackendConnect 18 http://backend18-003.yandex.ru:1852/search?
1390137366794361 4 BackendConnect 12 http://backend12-012.yandex.ru:1910/search?
1390137366794364 4 BackendConnect 17 http://backend17-010.yandex.ru:1518/search?
1390137366794374 4 BackendConnect 19 http://backend19-011.yandex.ru:1276/search?
1390137366794379 4 BackendConnect 11 http://backend11-013.yandex.ru:1457/search?
1390137366794409 4 BackendConnect 6 http://backend6-001.yandex.ru:1590/search?
1390137366794438 4 BackendConnect 2 http://backend2-008.yandex.ru:1199/search?
1390137366794448 4 BackendConnect 7 http://backend7-005.yandex.ru:1103/search?
1390137366794461 4 BackendConnect 8 http://backend8-010.yandex.ru:1171/search?
1390137366794565 4 BackendConnect 9 http://backend9-008.yandex.ru:1060/search?
1390137366794597 4 BackendConnect 5 http://backend5-004.yandex.ru:1121/search?
1390137366794602 4 BackendConnect 4 http://backend4-007.yandex.ru:1172/search?
1390137366794628 4 BackendConnect 0 http://backend0-007.yandex.ru:1080/search?
1390137366794657 4 BackendConnect 15 http://backend15-012.yandex.ru:1776/search?
1390137366794659 4 BackendConnect 14 http://backend14-009.yandex.ru:1036/search?
1390137366794662 4 BackendConnect 16 http://backend16-008.yandex.ru:1349/search?
1390137366794694 4 BackendConnect 3 http://backend3-008.yandex.ru:1008/search?
1390137366794727 4 BackendConnect 10 http://backend10-005.yandex.ru:1086/search?
1390137366794829 4 BackendConnect 1 http://backend1-010.yandex.ru:1746/search?
1390137366797781 5 StartRequest

Помогите кто чем может, хотя бы с разработкой алгоритма на псевдокоде, буду очень признателен любой помощи!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2016, 08:57
Ответы с готовыми решениями:

Чем лучше распарсить вот такой лог
44:57.046006-94004,SDBL,2,process=rphost,p:processName=db,OSThread=43152,t:clientID=2959,.... 44:57.046006 - время 94004 -...

Распарсить лог файлы через BAT
Здравствуйте! Поставили задачу распарсить данные в TXT. Попытался сам сделать с помощью BAT, но знаний не хватает :( Входные...

Лог работы свича.
Здраствуйте. Помогите вытянуть лог со свича AT-8550SP. Заходя через Web-интерфейс можно видеть когда,какой порт в свиче был подключен,...

8
in code we trust
 Аватар для __py__
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
27.04.2016, 10:50
в задании всё смешано в кучу! Какое это вообще имеет отношение к программированию? Он перепутал вопросы похоже. Пусть в академию наук вышлет запрос с вакансиями и требованиями высшего академического образования.
---
p.s сам он квантиль)

Добавлено через 7 минут
Вот только 1 но: там ведь требования с опытом работы python от 3 лет вроде) а академики вроде работают только академиками).
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 18
27.04.2016, 11:09  [ТС]
Это при трудоустройстве в яндекс задают такие задачи
0
in code we trust
 Аватар для __py__
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
27.04.2016, 14:39
Тогда выход 1-ый - стать академиком.
2-ой - попытаться стать доктором наук и убедить яндекс что вы доктор наук со знанием академика (и вам некогда заниматься решением всяких глупостей). У вас есть ведь задачи поважнее так ведь?
3-ий - выход стать бизнесменом , купить яндекс, уволить всех рекрутеров, назначить своего, и ждать согласия о приёме вас на работу в яндекс программистом).
Всё просто).

Добавлено через 3 минуты
А вообще парсинг это проще чем расписано в задаче http://www.slideshare.net/guestbd1ac4/http-3903943

Добавлено через 14 минут
http://www.slideshare.net/yandex/http-15335226 про протокол http

Добавлено через 1 минуту
Пройдя 5 таких собеседований ты гарантированно на 100-ую попытку пройдёшь собеседование) Любое дело в жизни это 99% процентов неудач и 1% победы и ради этого стоит жить.

Добавлено через 18 минут
Для самомотивации от Довганя а вдруг ты и правда станешь великим бизнесменом?)
https://www.youtube.com/watch?v=LTDbHUCqFks
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 18
27.04.2016, 15:04  [ТС]
Спасибо и на этом.
0
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
29.04.2016, 09:40
А в чём проблема? Тривиальная в целом задачка на подумать, возможно даже не на чистого программиста, а на какого-нибудь сисадмина-разраба внутренних сервисов.
0
in code we trust
 Аватар для __py__
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
29.04.2016, 11:24
Цитата Сообщение от smlprog Посмотреть сообщение
А в чём проблема? Тривиальная в целом задачка на подумать, возможно даже не на чистого программиста, а на какого-нибудь сисадмина-разраба внутренних сервисов.
Психология программиста так устроена что он не будет заниматься тем что ему не интересно (в том числе и программировать). 99% решённых задач на собеседовании зависят для некоторых от области которая интересна ему лично.

Добавлено через 11 минут
КОМУ-ТО ВЗЛОМАТЬ ЯНДЕКС-КОШЕЛЁК - лёгкая задача, а пройти собеседование в яндекс невозможно.

Добавлено через 4 минуты
Для тех кто проходит интервью в собеседовании - вопросы по python http://grishaev.me/interview/#_16 может пригодится кому?
-----
Вот именно что задача в собеседовании на сисадмина! Я не сисадмин! Вот и пусть ищут сисадмина и сами проходят своё собеседование.
0
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
29.04.2016, 11:28
Цитата Сообщение от __py__ Посмотреть сообщение
не будет заниматься тем что ему не интересно
Для этого существует вознаграждение за тяготы. У меня есть большие сомнения, что вы представляете, кто такие программисты, и чем они занимаются в реальном мире.

Цитата Сообщение от __py__ Посмотреть сообщение
зависят для некоторых от области которая интересна ему лично
У ТСа ещё областилка не отрасла, ставить условия на собеседованиях. А когда отрастёт такие треды и появляться не будут.
0
in code we trust
 Аватар для __py__
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
29.04.2016, 11:46
Цитата Сообщение от smlprog Посмотреть сообщение
Для этого существует вознаграждение за тяготы. У меня есть большие сомнения, что вы представляете, кто такие программисты, и чем они занимаются в реальном мире.
Как скажете).
Но останусь при своём).
О деньгах не надо думать) - мне главное что-то делать, то к чему душа лежит. А деньги сами приходят/приносят).

Добавлено через 7 минут
Главное найти страсть, предназначение в жизни, просыпаться во сне от потока идей. И решать новые, иногда безумные задачи. Вот когда начнёт вам снится код, можете себя поздравить! Это ваше предназначение!
Иногда спишь по 3 часа в день). Но это счастье. Такими темпами через год изучу 3 язык программирования).
И уж условия буду ставить я - ВАМ. Поверьте на слово.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2016, 11:46
Помогаю со студенческими работами здесь

Как создать лог работы bat файла?
Есть код поиска экзешника на всех дисках. Нужно процес его работы записать в текстовик. @echo off echo Идет поиск exe... for /f...

Как создать лог работы bat файла?
Как вывести результат в лог файл? Просто я пока новичок. Задание: Создаем bat-файл с именем L3.bat. Задача этого файла в составлении...

Алгоритм записи в лог файл, принцип работы?
Интересует процесс записи в лог файл какой вариант лучше? Просьба обосновать ответ Вариант 1: Открыть в начале работы пограммы...

Распарсить уравнение из файла (строки), для дальнейшей работы с ним
Доброго времени суток, уже битый час пытаюсь найти готовый или реализовать свой метод позволяющий из файла достать формулу, для дальнейшей...

Пожалуйста проверьте правильно ли я составила лог.функцию по лог.схеме?
Для заданной схемы, составленной из трех логических элементов ЛЭ1, ЛЭ2, ЛЭ3 записать логическое выражение и составить таблицу истинности. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru