Статистика

В некоторых ситуация встроенных статистических отчетов может оказаться недостаточно и возникнет необходимость обращения к сырым логам для построения специализированных отчетов.

Статистика строится на записях событий в таблицы баз данных. События скачивания книг и лог поисковых запросов всегда сохраняется в таблицу основной СУБД Drupal. Логи постраничного просмотра могут храниться как в СУБД Drupal, так и в MongoDB, инсталлируемой специально для хранения логов и высокоскоростной их обработки в условиях большого числа конкурентных подключений к книгам с включенным контролем конкурентных лицензий.

Статистика запуска приложений ELiS

Когда пользователь в приложении ELiS впервые после запуска открывает каталог библиотеки, в таблицу device_elis_stats заносится соответствующие событие. В таблице хранится следующая информация:

deviceCookieId - уникальный идентификатор приложения.

uid - идентификатор пользователя Drupal.

timestamp - время занесения записи в unixtime

mac - мак адрес устройства. На данную информацию опираться не стоит, т.к. iOS7+ и Android6+ всегда будут отдавать приложению фиктивный адрес 020000000000.

manufactured - операционная система пользователя. Соответственно, может быть iOS, Android, Windows.

width - ширина устройства в момент входа.

height - высота устройства в момент входа.

os - версия операционной системы. Может быть Windows, iPhone OS, Linux.

applicationVersion - версия приложения ELiS.

При отображении статистики каждая запись в этой таблице приравнивается к пользовательской сессии.

По адресу http://example.com/device/logs/run доступен лог запуска приложений ELiS. По нему в удобной форме можно отслеживать как часто используют приложения ELiS для входа в вашу библиотеку. Статистика из этой таблицы также попадает в виджет.

Скачанные книги

Статистика по скачанным книгам собирается только при активированном модуле Ebooks DRM.

Скачивание исходного файла книги (для которого разрешение скачивание без DRM) или скачивание защищенной книги попадает в таблицу основной СУБД Drupal ebooks_drm.

В таблице содержатся поля:

nid - идентификатор ноды скачанной книги.

uid - идентификатор пользователя. Будет равен нуля для неавторизованного пользователя.

time_update - зарезервировано.

time_expire - время истечения срока на который была скачана книга в unixtime

recall - зарезервировано.

time_download - время скачивания в unixtime.

format - формат книги (pdf или epub).

drm_enabled - включена ли DRM-защита на скачанной книге. 1 - включена и 0 если разрешено скачивание исходного файла.

В случае если DRM не активирован, время чтения книги устанавливается равным 6 месяцам.

В случае если пользователь удаляет книгу в присутствии интернета, время time_expire будет установлено во время фактического удаления, тем самым будет освобождена конкурентная лицензия.

Статистика поисковых запросов

Все выполненные через интерфейс ELiS поисковые запросы попадают в таблицу statistics_elis_search основной СУБД Drupal.

Поля таблицы:

uid - идентификатор пользователя. Ноль для анонимного зарпоса.

sid - идентификатор сессии пользователя. Идентификатор сессии отличет от NULL только если поисковый запрос выполняется из браузера. Будет NULL при поиске из приложений или по протоколу OpenSearch.

date - время запроса в unixtime.

text - текст поискового запроса.

nid - идентификатор ноды, с которой сделан запрос. Если NULL - поисковый запрос выполняется по всей библиотеке. Если идентификатор принадлежит ноде типа книга или страница книги - поиск осуществляется по книге. Если принадлежит ноде типа каталог (subj), поиск ведется в ветке каталога.

Логи просмотров страниц в PDF

Каждый просмотр страницы PDF-книги с сайта попадает в данные логи. На основе этих логов вычисляется книговыдача с сайта. Из них же считается страницевыдача.

Данные логи могут храниться в таблице statistics_ebook в основной СУБД Drupal или в отдельных коллекциях (аналог таблиц) в MongoDB. При этом на каждый час в MongoDB создается новая коллекция, что позволяет уменьшить нагрузку на базу данных при подсчете занятых конкурентных лицензий чтением книг с сайта.

Вне зависимости от базы данных, хранятся следующие поля:

nid - идентификатор страницы (ноды)

uid - идентификатор пользователя. Равен нулю если пользователь не авторизован.

sid - сессия пользователя. Может быть пустой или NULL, если пользователь просматривает страницу из приложения и он в нем авторизован.

date - время добавления записи в unixtime.

format - формат страницы. Может быть jpg, png, webp, svg, pdf.

parent_nid - идентификатор ноды книги.

Если вы хотите получить логи из MongoDB, рекомендуется изучить работу класса ElisStatMongo, находящегося обычно в подпапке модуля статистики /var/www/vh/library/sites/all/modules/elis_stats/class/ElisStatMongo.php

Warning

В данную статистику не попадают просмотры обложки и страниц в разрешении менее 300 пикселей по ширине. Соответственно, такие просмотры не учитываются в конкурентых лицензиях. Таким способом предотвращается ситуация, когда просмотр обложек в каталоге попадает в книговыдачу с просмотром одной страницы.

Note

В данную статистику не попадают страницы на просмотр которых у пользователя нет прав.

Note

В данную статистику не попадают пользователи с ролью (правами) librarian и администратор сайта с uid 1, что предотвращает учет служебных обращений.

Warning

Логика записи данных в sid может поменяться в дальнейшем. Нельзя считать число сессий простым суммированием уникальных значений sid.

Note

При использовании упреждающего кеширования со стороны клиентского плеера, возможно некоторое завышение отчетности по страницевыдачи.

Учет просмотров страниц скачанных книг

При скачивании исходной книги в виде файла, скачанные страницы в статистике не отображаются.

При скачивании книги защищенной DRM в приложении ELiS, скачанные и просмотренные страницы из приложения на любом устройстве в котором авторизован пользователь не учитываются. Просмотренные страницы на сайте при этом попадают в статистику как обычно.

Включение MongoDB для хранения постраничных логов просмотра

Установите MongoDB не ниже 3 версии.

Настройте MongoDB на использование движка WiredTiger согласно документации к базе данных. Для этого в файле /etc/mongod.conf добавьте или раскомментируйте строку storageEngine=wiredTiger.

Запустите сервер MongoDB и настройте сервер на автоматический запуск при загрузке сервера.

Установите модуль MongoDB.

Warning

Не рекомендуется использовать MongoDB для переноса части полей Drupal в эту базу данных из основной СУБД. Нельзя переносить поля Drupal привязанные к типам материалов управляемых ELiS в MongoDB. MongoDB рекомендуется использовать только для хранения логов просмотров страниц.

Активируйте модуль MongoDB. Дополнительные модули (MongoDB Block, MongoDB Block UI и т.д.) можно не активировать.

Сконфигурируйте сервер MongoDB на использование с ELiS. Для этого следует добавить или расскомментировать в файле конфигурации Drupal /var/www/vh/library/sites/default/files/settings.php следующие строчки:

$conf['mongodb_connections'] = array(
  'default' => array(
    'host' => 'mongodb://127.0.0.1',
    'db' => 'elis',
  ),
  'dayLog' => array(
    'host' => 'mongodb://127.0.0.1',
    'db' => 'elisDayLog',
  ),
  'userLog' => array(
    'host' => 'mongodb://127.0.0.1',
    'db' => 'elisUserLog',
  ),
);

#connections configuration

$conf['mongodb_collections'] = array(
  'dayLog' => array(
    'db_connection' => 'dayLog',
  ),
  'userLogs' => array(
    'db_connection' => 'userLog',
  ),
);

ELiS автоматически обнаружит появление данной конфигурации и переключит хранение логов на MongoDB.

Warning

При переключении на MongoDB необходимо провести процедуру миграции логов, либо зафиксировать посещаемость на начало года для корректного годового статистического отчета.

Warning

Для повышения производительности, не используйте авторизацию в MongoDB. Однако, в этом случае, вам следует запускать MongoDB только на локальной машине без предоставление доступа к базе по сети, либо, если MongoDB вынесена на отдельный сервер, использовать для фильтрации файервол.

Внешняя статистика

В ELiS имеется возможность подключать внешние статистические аналитические системы, такие как Yandex.Metrika и Google Analytics.

Эти системы дополняют статистику ELiS тем, что позволяют точнее определить число уникальных посетителей, их пол, возраст, города, страны, разрешения экранов, типы устройств (смартфоны, планшеты, настольные ПК), источники переходов на сайт, время посещений, доступные технологии, версии браузеров и многое другое.

Внешние статистические системы обладают встроенными инструментами, отображающими динамику параметров и позволяющих визуально сравнивать показатели с предыдущими периодами.

ELiS не ставит долгоживущие куки в браузер, поэтому если пользователь не авторизован, ELiS сложно сказать, заходил ли он вчера на сайт. В связи с этим ELiS не считает число пользователей, посетивших библиотеку за заданный период. Зато этот показатель считают внешние статистические системы.

Разница между внешней статистикой и ELiS в том, что ELiS чётко знает что такое документ-плеер и умеет считать показатели воспроизведения документов в плеере и статистика ELiS во многом ориентированна именно на то, как документ в плеере воспроизводился. Внешние системы ничего не знают о плеере и не могут учесть, например, число просмотренных страниц в книге. Зато внешние системы считают множество других показателей, связанных с сеансом взаимодействия не с отдельным документ-плеером, а с сайтом целиком.

Внешняя статистика дополняет статистику ELiS и их рекомендуется использовать совместно.

Статистика Google Analytics

Вы можете задать один идентификатор Google Analytics на сайт целиком в настройках модуля ELiS Stats (admin/config/content/elis_stats).

Больше ничего настраивать не надо и отдельный внешний модуль Google Analytics для Drupal также устанавливать не надо.

Статистика Yandex.Metrika

Яндекс.Метрика может быть установлена как на сайт целиком, так и в виде отдельного счётчика на каждую организацию.

Для работы счётчика на сайте целиком, идентификатор счётчика надо указать в настройках модуля ELiS Stats (admin/config/content/elis_stats).

Для организаций идентификатор счётчика опционален, пишется в текстовое поле field_yandex_metrika, прикреплённого к сущности организации (если поля нет - создайте) и активируйте модули ELiS Stats и ELiS Organization. Больше ничего для настройки не требуется.

Активация счётчика организации происходит либо если пользователь находится в сети организации, либо ассоциирован с организацией (профиль пользователя имеет ассоциацию с сущностью организации). Если пользователь ассоциирован с несколькими организациями, активируются счётчики сразу всех из них + счётчик сайта (если есть).

Подробнее о счётчике Яндекс.Метрики для организаций можно прочитать в блоге: https://elibsystem.ru/node/203.