Об этом проекте

Hummingbird — это self-hosted сервер для отслеживания сайтов и хранения аналитики, написанный для Node.js. Он предоставляет посетителям отслеживающий пиксель размером 1x1; GET-запрос браузера переносит данные отслеживания, создаваемые небольшим JavaScript-сниппетом. Требования и установка Для работы требуется node.js версии 0.8.0 или выше. Шаги по настройке в README включают клонирование репозитория, запуск npm install для загрузки зависимостей и, по желанию, загрузку базы данных GeoIP GeoLiteCity.dat от MaxMind в корневой каталог, если требуется функция карты. Сервер запускается командой `node server.js`. Дашборд и развертывание Дашборд по умолчанию работает на порту 8080 и может быть отключен для использования в продакшене в файле config/config.js. Дашборд представляет собой обычный HTML, который отдается из папки public/, поэтому его может хостить любой веб-сервер. В README содержится предупреждение о том, что дашборд следует защитить, если он не должен быть общедоступным, обычно путем размещения его за nginx или apache с basic auth. Функция 'listen' дашборда принимает второй аргумент для привязки интерфейса — например, "127.0.0.1" только для localhost или "0.0.0.0" для всех интерфейсов; при этом отслеживающий пиксель должен работать на отдельном порту, чтобы оставаться доступным извне. Настройка отслеживания Файл client/hummingbird.js содержит небольшой скрипт, который инициирует событие Hummingbird. Его можно вставить в тело страницы или загрузить и подключить с помощью тега script. Вызов HummingbirdTracker.track() без аргументов отправляет стандартные параметры, такие как URL страницы; также можно прикрепить произвольные данные, например HummingbirdTracker.track({logged_in: true}), которые затем могут быть использованы в метриках Hummingbird для фильтрации событий на бэкенде. Архитектура Hummingbird состоит из двух частей: сервера отслеживания на Node.js, который фиксирует активность пользователей через пиксель, и набора JavaScript-виджетов, которые отображают эту активность. Сервер транслирует всю активность клиентам через WebSockets, если это возможно, с переходом на Flash sockets или long polling. Объект Hummingbird.WebSocket получает события от сервера в виде JSON-объектов, а отдельные виджеты подписываются на определенную метрику и регистрируют функции-обработчики, которые вызываются при появлении этой метрики. Пользовательские метрики и виджеты Метрики находятся в lib/metrics и загружаются автоматически. Каждая метрика содержит функцию-обработчик, которая вызывается при каждом новом событии пользователя, и хранит данные в свойстве объекта `data`, которое отправляется клиентам с интервалами, указанными в метрике. total_views.js приводится в качестве базового примера, а cart_adds.js — как пример фильтрации по параметрам запроса. Стандартные виджеты (Counter, Logger, Graph) демонстрируют способ подключения к данным сервера; минимальный пример виджета находится в public/js/widgets/logger.js. Виджет представляет собой объект, прототип которого расширяет Hummingbird.Base и реализует метод onMessage. В README также приводится совет: чтобы запустить интерфейс локально, получая поток данных с продакшн-сервера, используйте URL вида http://localhost:8080/?ws_server=your-host.com&ws_port=12345. Примечания к проекту Hummingbird распространяется под лицензией MIT. В README указаны Michael Nutt, Benny Wong и ряд других контрибьюторов.