Внедрение системы сбора статистики - Elastic Stack
Содержание
-
Система сбора статистики
-
Что нам дает ELK?
-
Elastic Stack применение REST API
-
Установка и настройка ES
-
Пример внедрения Elastic Stack
-
Вывод
Рано или поздно любой крупный бизнес сталкивается с проблемой сбора и хранения аналитики. Информация о бизнес-процессах стремительно растет и накапливается, все сложнее становится осуществлять поиск, хранение, индексацию и анализ критически важных данных.
В качестве примера рассмотрим веб-портал, собирающий информацию об активности пользователей, к примеру:
- - сколько пользователей просмотрели обучающие материалы,
- - какие материалы были просмотрены,
- - какова активность пользователей,
- - с каких устройств и браузеров пользователи заходят на сайт.
Допустим, на портале около зарегистрировано примерно 10 000 пользователей и хранить все данные в базе сайта не получается: во-первых ложится большая нагрузка на сам сайт и как следствие падает скорость работы и увеличивается время отклика, во-вторых накопленные данные крайне сложно проанализировать и выдать хоть какие-то отчеты и графики.
Отсюда получается вполне логичное решение – вынести весь сбор, хранение и анализ информации на отдельный сервер, на котором будет развернута система полнотекстового поиска.
Что нам дает ELK?
Итак, перечислим основные задачи, которые необходимо решить:
- 1. Добавление больших объемов информации без существенной нагрузки на БД.
- 2. Поиск и анализ по большому количеству критериев.
- 3. Сбор статистики и дальнейший ее показ в удобном виде.
Elasticsearch – популярная поисковая система в области Big Data, масштабируемое нереляционное хранилище данных с открытым исходным кодом, аналитическая NoSQL-СУБД с широким набором функций полнотекстового поиска.
ES является ядром ELK-стека (Elastic Stack), в состав которого, помимо Elasticsearch, входят следующие продукты:
Logstash – инструмент сбора, преобразования и сохранения в общем хранилище событий из различных источников (файлы, базы данных, логи и пр.) в реальном времени;
Kibana – веб-интерфейс для Elasticsearch, чтобы взаимодействовать с данными, которые хранятся в его индексах ES через динамические панели мониторинга, таблицы, графики и диаграммы, которые отображают изменения в ES-запросах в реальном времени;
FileBeat – агент на серверах для отправки различных типов оперативных данных в ES.
В рамках нашей разрабатываемой системы компоненты ELK взаимодействуют следующим образом:
Elasticsearch - основное ядро всей системы, реализующий функции базы данных, поиск и анализ данных. Быстрый и гибкий поиск обеспечивается за счет анализаторов текста, нечеткого поиска. Немаловажно отметить, что наличие REST API позволяет модифицировать, добавлять, просматривать, удалять данные, а также осуществлять интеграцию со сторонними сервисами.
Главная особенность Elasticsearch - отсутствие четкой структуры для хранения данных, в отличие от традиционной реляционной СУБД, где данные хранятся в строго структурированном виде с конкретными типами и размерами.
Kibana - система визуализации ES.
Filebeat - основная задача - сбор и хранение логов
Metricbeat - осуществляет сбор статистики нагрузки CPU и памяти (глобально и по отдельным процессам), с дальнейшей передачей Elasticsearch
X-Pack - функционал, связанный с обеспечением безопасности ES и разграничением прав пользователей.
Elastic Stack - применение REST API
Elasticsearch имеет многофункциональный REST API, работающий на протоколе HTTP, что позволяет без проблем интегрировать ES с любым сторонним сервисом.
Рассмотрим реализацию задачи по интеграции веб-сервиса на Битриксе:
- Имеется образовательный портал с большим количеством пользователей (от 10 000).
- Необходимо собирать статистику поведения пользователей для дальнейшего анализа: количество посещений, с каких устройств и браузеров заходят пользователи, сколько было просмотрено видеоматериалов, сколько в среднем по времени просматривается материалы, какие ресурсы сайта пользуются популярностью и т. д.
Схема интеграции портала показана на рисунке ниже:
Как видно на рисунке, интеграция ES Stack с сторонним веб-ресурсом достаточно проста: необходимо всего лишь организовать сбор статистики на самом сайте и дальше просто обычными HTTP запросами отправляем наши данные на сервер с Elasticsearch, который принимает входящие данные для дальнейшего анализа.
Установка и настройка ES
- Elastic Stack достаточно прост в установке и включает в себя следующие шаги:
- Установка и настройка Elasticsearch.
- Установка и настройка Kibana.
- Установка и настройка Logstash.
- Установка и настройка Metricbeat.
- Установка и настройка X-Pack.
Пример внедрения Elastic Stack
Итак, после установки Elastic Stack мы можем работать с системой (главный экран):
На рисунке ниже приведены основные параметры, по которым собирается статистика:
- Запрос контроля присутствия;
- Статистика по нажатым кнопкам;
- Количество пользователей, посетивших трансляцию с обучающим материалом;
- Посещение пользователями страниц сайта.
Ниже, на рисунках приведен пример визуализации основных отслеживаемых параметров.
Статистика активности пользователей:
Статистика по нажатым кнопкам на трансляциях с обучающим материалом:
Количество зарегистрированных и активных пользователей:
Количество пользователей, просматривающих обучающие материалы:
Статистика по пользователям, посещавших страницу с обучающим материалом:
При помощи модуля Metricbeat можно посмотреть статистику нагрузки CPU и памяти.
Вывод
Как мы видим Elasticsearch - это мощная поисковая система, способная решать самые разные задачи. Немаловажно отметить, что внедрение ELK Stack не требует как больших финансовых так и временных затрат.
Система легко устанавливается, легко настраивается и при необходимости масштабируется.