Клиент хочет получать статистику по ряду показателей посещаемости своего сайта на основе журналов доступа веб-сервера. Перечень показателей включает следующее:
“Сырые” данные содержатся в текстовых строках журналов доступа. Данные должны быть выделены из журналов и выгружены в SQL-базу данных.
[21/Jun/2014:00:00:14 +0400] test_host_name.ru xxx.xxx.xxx.xxx "GET /api/settings HTTP/1.1" 200 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" "uid=2851403290065" "-" [proxy (-) : 127.0.0.1:8080 0.017 200 ] 197 385 0.017
[21/Jun/2014:00:00:14 +0400] test_host_name.ru xxx.xxx.xxx.xxx "GET /barlist HTTP/1.1" 302 "-" "Opera/9.80 (Windows NT 6.1; MRA 8.0 (build 6019)) Presto/2.12.388 Version/12.16" "uid=675491403076418" "-" [proxy (-) : - - - ] 981 356 0.000
Из каждой строки журнала выделяется и помещается в базу данных следующая информация:
Модуль по выделению данных и выгрузке в базу данных может быть реализован на любом *nix-дружеском языке. Модуль должен работать как обособленный компонент, который может запускаться через командную строку с набором параметров, получать исходные журналы доступа, разбирать их и выгружать в базу данных. Предстоит специфицировать, каким образом модуль получает исходные данные, например, копирует сжатые архивы из указанного места через cp/scp/http/ftp или подключается по ssh к веб-серверу заказчика, сжимает там свежие журналы и копирует их посредством scp.
Для упрощения администрирования следует по максимуму вынести все настройки модуля, которые могут потребовать изменений в будущем, в отдельные конфигурационные файлы.
Тесты разбора строк?
В качестве базы данных должен использоваться свободный программный продукт с открытым исходным кодом. Тип базы данных: SQL. Предлагаемый продукт: MariaDB/MySQL (Предложения/комментарии?)
Предстоит продумать структуру таблиц и индексов.
В зависимости от потребностей и возможностей заказчика сервер (база данных, модуль для парсинга, модуль для построения отчётов) может быть реализован несколькими способами:
https://github.com/fiorix/freegeoip (есть открытый API до 10K запросов в час).
Отчёт предоставляется в форматах Word и PDF по заданным показателям (см. перечень показателей в разделе “Цели и задачи”) по заранее определённым временным периодам. Отчёт предоставляется ежемесячно.
Отчёт в формате веб-страницы с возможностью экспорта в Word и PDF. Пользователь может самостоятельно выбирать временные периоды для отображения (за месяц, последовательность дней), фильтровать данные в отчёте (например, какова статистика по браузерам только среди пользователей из Москвы, или сравнение посещаемости между ядром и неядром). Интерактивность и динамическое построение графиков и таблиц реализуется на основе платформы Shiny (см. [галерею примеров][http://shiny.rstudio.com/gallery/]). Данные в отчёте обновляются раз в месяц.
Аналог интерактивного ежемесячного отчёта, но данные обновляются с задержкой не более 3-х часов. Сервер с отчётом работает в VPS-облаке. Требуется дополнительная настройка сервера клиента для организации автоматического доступа к логам снаружи.
| Отчёт | Стоимость разработки (т.руб.) | Время выполнения (раб.дней) | Поддержка (т.р./мес) |
|---|---|---|---|
| Статичный ежемесячный | 12 | 6 | 2,5 |
| Интерактивный ежемесячный | 26 | 11 | 3 |
| Интерактивный оперативный | 42 | 15 | 5 |
Цены могут быть откорректированы
Заказчик получает неисключительное право на использование всего исходного кода, разработанного в рамках проекта.
Поддержка включает в себя только обновление данных, обеспечение функционирования на уровне, достигнутом при первоначальной разработке и оплату аренды оборудования (где необходимо). Доработка сервиса и/или адаптация к изменениям конфигурации веб-сервера заказчика оплачиваются отдельно (почасовая оплата или дополнительная договорённость).