SlideShare a Scribd company logo
Elasticsearch: рациональный подход к 
созданию собственной системы аналитики 
Вячеслав Никулин, ведущий серверный разработчик, Nekki
Нам нужна аналитика
Поиск готового решения 
● Готово к использованию 
● Технические и функциональные ограничения 
● Высокая цена
РСУБД 
● Знакомый SQL - путь 
● Сложно масштабировать и поддерживать 
● А может нам не нужна РСУБД?
NoSQL 
● Документоориентированность, масштабируемость, отказоустойчивость 
● Огромный спектр технологий 
Hadoop HBase Cassandra MongoDB Redis Riak Kafka Storm RabbitMQ ZeroMQ Spark etc 
● Нет опыта - разработка может занять годы
Elasticsearch
Elasticsearch за 10 секунд 
● Документо-ориентированное хранилище, не требующее описание схемы 
таблиц 
● Распределенное, горизонтально-масштабируемое, отказоустойчивое 
● RESTful API (json поверх http) 
● Мощное поисковый движок 
● Написан на Java, расширяем 
● Активно развивается (> 15 релизов в этом году) 
● Разработан поверх Apache Lucene 
● Открытый исходный код (Apache License 2.0) 
● Много пользователей (StackOverflow, GitHub, TheGuardian, Bloomberg)
Чего в elasticsearch нет 
● Джойны 
● Транзакции 
● Безопасность
Стек ELK 
● Elasticsearch 
● Logstash 
○ Inputs (file, syslog, tcp, rabbitmq, zeromq, redis) 
○ Filters (geoip, grok, ruby) 
○ Outputs (file, elasticsearch, mongodb, zabbix) 
● Kibana 
● Marvel 
● Curator
Терминология 
● Узел - один сервер (один инстанс elasticsearch/jvm) 
● Кластер - множество узлов 
● Документ - базовый юнит информации, который может быть 
индексирован. 
● Индекс - коллекция документов с походими характеристиками 
● Тип - множество документов с одинаковым набором полей 
● Шард - неделимый юнит масштабирования 
● Реплика - копия шарда 
Примерное соотвествие между понятиями РСУБД и Elasticsearch 
● РСУБД ⇒ База данных/Схема⇒ Таблица ⇒ Строка ⇒ Столбец 
● Elasticsearch ⇒ Индекс ⇒ Тип ⇒ Документ ⇒ Поле
Разработка системы аналитики
Ключевые особенности 
● Возможность играть в оффлайне 
● ~1 000 000 DAU
Процессинг логов 
● Генерация и сохранение логов в клиенте 
● Отправка логов на сервер 
● Фильтрация логов, добавление полей в события, сохранение лога на 
диск 
● Централизация логов 
● Импорт логов в Elasticsearch 
● Визуализация данных
Генерация событий в клиенте 
● Эвент - это json-объект 
● Проектирование перечня эвентов и их структуры 
○ Список эвентов 
○ Обязательные параметры эвента 
○ Дополнительные параметры
Отправка логов на сервер 
● Http-запрос на веб-сервер 
● Бэкенд на PHP 
● Прореживание логов 
○ Каждый Nый 
○ Плательщик 
○ High level 
○ Участник A/B теста 
○ Некоторые события нужно принимать от всех юзеров 
○ Стратегии можно комбинировать 
○ Фильтрация читеров
Обработка логов на сервере 
● Фильтрация логов 
● Добавление полей в событие 
● Сохранение логов на диск
Централизация логов 
● Несколько серверов (ios, android etc) с установленным logstash 
● Logstash отслеживает изменения в директории и отсылает новые данные 
на сервер консолидации логов 
● Logstash на центральном сервере принимает данные и отправляет их в 
elasticsearch
Маппинг данных 
● Иногда необходим явный маппинг 
○ Nested объекты 
○ Timestamp в виде long 
○ Специфичный настройки индексирования 
● Задается шаблоном в файле или с помощью REST API
Разбиение по индексам 
● User-based индексы 
● Timestamp-based индексы 
○ /logs-2014-09-01/purchase, /logs-2014-09-02/fight_end 
○ Удалять лучше индекс целиком
О чем не стоит забывать 
● Mapping explosion 
○ Неправильно: {"1": 1} {"2": 4} {"3": 9} {"4": 16} {"5": 25} 
○ Правильно: {"key": 1, "value": 1} {"key": 2, "value": 4} 
● Длинные GC паузы 
● Много вложенных агрегаций 
● Проблема зиллиона шардов 
○ Индекс одного документа приведет к OOM
Визуализация данных 
● Kibana 
● Marvel 
● Своя админка
Продакшн
Наша аналитика 
● Сложные гд-отчеты 
● Статистика крашей 
● Аналитика А/B тестов
Цифры 
● Один сервер 
500 ГБ SSD, 4x-ядерный E3-1270 3.50GHz, 32 GB RAM 
● 50 rps индексирования, в пике было 10к 
● в день 3М событий, 1ГБ в elasticsearch 
● 1-2% cpu load 
● всего 100M документов 
● Поиск < 100 мс
Команда, поддержка 
● Сейчас занято 1.5 человека 
● Запустили в продакшн за 2 месяца силами 2.5 человек 
● Геймдизайнеры осваивают инструмент и сами пишут запросы 
● Большие планы на будущее: больше гд-отчетов, статистика пуш 
уведомлений, внедрение в другие проекты компании
Вопросы?

More Related Content

What's hot

Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Ontico
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Ontico
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
Fwdays
 
Clickhouse
ClickhouseClickhouse
Clickhouse
Clickky
 
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
2ГИС Технологии
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
it-people
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
Ontico
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
переезд мониторинга
переезд мониторингапереезд мониторинга
переезд мониторинга
Алексей Демидов
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Badoo Development
 
Андрей Лузин
Андрей ЛузинАндрей Лузин
Андрей Лузин
CodeFest
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
Александр Сигачев
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Vadim Nesterov
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 
Jinba - frontendconf.ru/2015
Jinba - frontendconf.ru/2015Jinba - frontendconf.ru/2015
Jinba - frontendconf.ru/2015
Pavel Dovbush
 

What's hot (20)

Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
 
Clickhouse
ClickhouseClickhouse
Clickhouse
 
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
 
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
переезд мониторинга
переезд мониторингапереезд мониторинга
переезд мониторинга
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
 
Андрей Лузин
Андрей ЛузинАндрей Лузин
Андрей Лузин
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
 
Jinba - frontendconf.ru/2015
Jinba - frontendconf.ru/2015Jinba - frontendconf.ru/2015
Jinba - frontendconf.ru/2015
 

Viewers also liked

Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
Olga Lavrentieva
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с ElasticsearchОмские ИТ-субботники
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
Jurriaan Persyn
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
Даниил Зайцев
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
MODX Беларусь
 
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
DevGAMM Conference
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Tanya Denisyuk
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyVsevolod Polyakov
 
ElasticSearch at berlinbuzzwords 2010
ElasticSearch at berlinbuzzwords 2010ElasticSearch at berlinbuzzwords 2010
ElasticSearch at berlinbuzzwords 2010
Elasticsearch
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
ABC Talks
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
Омские ИТ-субботники
 
Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutes
David Pilato
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
Ruslan Zavacky
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
Rahul Jain
 
Scaling an ELK stack at bol.com
Scaling an ELK stack at bol.comScaling an ELK stack at bol.com
Scaling an ELK stack at bol.com
Renzo Tomà
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ontico
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
Mayur Rathod
 
Curso completo de Elasticsearch
Curso completo de ElasticsearchCurso completo de Elasticsearch
Curso completo de Elasticsearch
Federico Andrés Ocampo
 
Attack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and KibanaAttack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and Kibana
Prajal Kulkarni
 

Viewers also liked (20)

Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
 
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
 
ElasticSearch at berlinbuzzwords 2010
ElasticSearch at berlinbuzzwords 2010ElasticSearch at berlinbuzzwords 2010
ElasticSearch at berlinbuzzwords 2010
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
 
Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutes
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
 
Scaling an ELK stack at bol.com
Scaling an ELK stack at bol.comScaling an ELK stack at bol.com
Scaling an ELK stack at bol.com
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
 
Curso completo de Elasticsearch
Curso completo de ElasticsearchCurso completo de Elasticsearch
Curso completo de Elasticsearch
 
Attack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and KibanaAttack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and Kibana
 

Similar to кри 2014 elastic search рациональный подход к созданию собственной системы аналитики

ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs Hibernate
Alexey Zinoviev
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
Омские ИТ-субботники
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
IT Event
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
Ontico
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Ontico
 
МойСклад, облачный сервис ERP
МойСклад, облачный сервис ERPМойСклад, облачный сервис ERP
МойСклад, облачный сервис ERP
Oleg Alexeev
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
Alexandr Krasheninnikov
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Ontico
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
Yulia Kotova
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
Badoo Development
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
Sergey Skvortsov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
Alex Chistyakov
 

Similar to кри 2014 elastic search рациональный подход к созданию собственной системы аналитики (20)

ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs Hibernate
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
 
МойСклад, облачный сервис ERP
МойСклад, облачный сервис ERPМойСклад, облачный сервис ERP
МойСклад, облачный сервис ERP
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 

кри 2014 elastic search рациональный подход к созданию собственной системы аналитики

  • 1. Elasticsearch: рациональный подход к созданию собственной системы аналитики Вячеслав Никулин, ведущий серверный разработчик, Nekki
  • 3. Поиск готового решения ● Готово к использованию ● Технические и функциональные ограничения ● Высокая цена
  • 4. РСУБД ● Знакомый SQL - путь ● Сложно масштабировать и поддерживать ● А может нам не нужна РСУБД?
  • 5. NoSQL ● Документоориентированность, масштабируемость, отказоустойчивость ● Огромный спектр технологий Hadoop HBase Cassandra MongoDB Redis Riak Kafka Storm RabbitMQ ZeroMQ Spark etc ● Нет опыта - разработка может занять годы
  • 7. Elasticsearch за 10 секунд ● Документо-ориентированное хранилище, не требующее описание схемы таблиц ● Распределенное, горизонтально-масштабируемое, отказоустойчивое ● RESTful API (json поверх http) ● Мощное поисковый движок ● Написан на Java, расширяем ● Активно развивается (> 15 релизов в этом году) ● Разработан поверх Apache Lucene ● Открытый исходный код (Apache License 2.0) ● Много пользователей (StackOverflow, GitHub, TheGuardian, Bloomberg)
  • 8. Чего в elasticsearch нет ● Джойны ● Транзакции ● Безопасность
  • 9. Стек ELK ● Elasticsearch ● Logstash ○ Inputs (file, syslog, tcp, rabbitmq, zeromq, redis) ○ Filters (geoip, grok, ruby) ○ Outputs (file, elasticsearch, mongodb, zabbix) ● Kibana ● Marvel ● Curator
  • 10. Терминология ● Узел - один сервер (один инстанс elasticsearch/jvm) ● Кластер - множество узлов ● Документ - базовый юнит информации, который может быть индексирован. ● Индекс - коллекция документов с походими характеристиками ● Тип - множество документов с одинаковым набором полей ● Шард - неделимый юнит масштабирования ● Реплика - копия шарда Примерное соотвествие между понятиями РСУБД и Elasticsearch ● РСУБД ⇒ База данных/Схема⇒ Таблица ⇒ Строка ⇒ Столбец ● Elasticsearch ⇒ Индекс ⇒ Тип ⇒ Документ ⇒ Поле
  • 12. Ключевые особенности ● Возможность играть в оффлайне ● ~1 000 000 DAU
  • 13. Процессинг логов ● Генерация и сохранение логов в клиенте ● Отправка логов на сервер ● Фильтрация логов, добавление полей в события, сохранение лога на диск ● Централизация логов ● Импорт логов в Elasticsearch ● Визуализация данных
  • 14. Генерация событий в клиенте ● Эвент - это json-объект ● Проектирование перечня эвентов и их структуры ○ Список эвентов ○ Обязательные параметры эвента ○ Дополнительные параметры
  • 15. Отправка логов на сервер ● Http-запрос на веб-сервер ● Бэкенд на PHP ● Прореживание логов ○ Каждый Nый ○ Плательщик ○ High level ○ Участник A/B теста ○ Некоторые события нужно принимать от всех юзеров ○ Стратегии можно комбинировать ○ Фильтрация читеров
  • 16. Обработка логов на сервере ● Фильтрация логов ● Добавление полей в событие ● Сохранение логов на диск
  • 17. Централизация логов ● Несколько серверов (ios, android etc) с установленным logstash ● Logstash отслеживает изменения в директории и отсылает новые данные на сервер консолидации логов ● Logstash на центральном сервере принимает данные и отправляет их в elasticsearch
  • 18. Маппинг данных ● Иногда необходим явный маппинг ○ Nested объекты ○ Timestamp в виде long ○ Специфичный настройки индексирования ● Задается шаблоном в файле или с помощью REST API
  • 19. Разбиение по индексам ● User-based индексы ● Timestamp-based индексы ○ /logs-2014-09-01/purchase, /logs-2014-09-02/fight_end ○ Удалять лучше индекс целиком
  • 20. О чем не стоит забывать ● Mapping explosion ○ Неправильно: {"1": 1} {"2": 4} {"3": 9} {"4": 16} {"5": 25} ○ Правильно: {"key": 1, "value": 1} {"key": 2, "value": 4} ● Длинные GC паузы ● Много вложенных агрегаций ● Проблема зиллиона шардов ○ Индекс одного документа приведет к OOM
  • 21. Визуализация данных ● Kibana ● Marvel ● Своя админка
  • 23. Наша аналитика ● Сложные гд-отчеты ● Статистика крашей ● Аналитика А/B тестов
  • 24. Цифры ● Один сервер 500 ГБ SSD, 4x-ядерный E3-1270 3.50GHz, 32 GB RAM ● 50 rps индексирования, в пике было 10к ● в день 3М событий, 1ГБ в elasticsearch ● 1-2% cpu load ● всего 100M документов ● Поиск < 100 мс
  • 25. Команда, поддержка ● Сейчас занято 1.5 человека ● Запустили в продакшн за 2 месяца силами 2.5 человек ● Геймдизайнеры осваивают инструмент и сами пишут запросы ● Большие планы на будущее: больше гд-отчетов, статистика пуш уведомлений, внедрение в другие проекты компании