SlideShare a Scribd company logo
StatsCollector, или
"Мама! Он и меня посчитал!"
Старынин Валерий,
Badoo.
В докладе будет рассказано:
• как собирать события с тысяч
серверов
• как правильно распределять их для
обработки на несколько серверов
• как устроена система сбора
простых логов и агрегированной
статистики в Badoo
• какие есть перспективы развития
системы
Badoo это
• Социальная сеть для поиска новых друзей
• 200 млн. зарегистрированных пользователей
• Работаем во всех странах мира
• Мобильные приложения под Android, iOS, Windows,
BlackBerry. А так же Wap и HTML5 версии
• 2,5 датацентра: в Европе, Америке и Азии
• Более 3 000 серверов
Событие в статистике - что это такое?
• Действия пользователей
• Действия модераторов
• Действия скриптов
• Ошибки
• Отчеты о выполнении
Старая система сбора статистики
USA Europe
StatsCollector
• Структура
• Типы данных
• Варианты отчетов
• Возможности
• Мониторинг
Выбираем транспорт. Scribe!
• Берет доставку на себя
• Умеет перенаправлять куда нужно
• Умеет делить потоки
• Умеет резервировать
• Наши C-шники могут поддерживать
Scribe
USA Europe
Глобальные события
USA Europe
Локальные события
USA Europe
Конфигурация сервера
PHP
PHP
Scribe Scribe-Роутер
Роутер и точка назначения
Scribe-
роутер Scribe
Scribe Scribe
Scribe
Релеи
Scribe-
роутер
Scribe-
релей
Scribe-
релей
Scribe-
релей
Scribe-
релей
Scribe-
роутер
События и отчеты
• Событие — источник данных
• Отчет — результат сбора данных
• 1 событие — много отчетов
• Типы отчетов (логи, 2 вида агрегации)
• Автоматика в базах данных
Отправка события
Конфиг отчета - лога
Отчет - лог
ts method platform_id hostname ts_db
2014-06-01 00:00:10 FastEvent 2 scripts15.ulan 2014-06-01 00:00:26
2014-06-01 00:00:22 FastEvent 2 scripts45.ulan 2014-06-01 00:00:48
2014-06-01 00:01:03 FastEvent 1 scripts6.mlan 2014-06-01 00:01:14
2014-06-01 00:01:03 LocalFastEvent 1 scripts6.mlan 2014-06-01 00:01:22
2014-06-01 00:01:10 FastEvent 2 scripts44.ulan 2014-06-01 00:01:39
2014-06-01 00:01:28 FastEvent 1 scripts47.mlan 2014-06-01 00:01:39
2014-06-01 00:01:28 LocalFastEvent 1 scripts47.mlan 2014-06-01 00:01:48
2014-06-01 00:01:33 FastEvent 2 scripts31.ulan 2014-06-01 00:02:05
2014-06-01 00:01:40 FastEvent 2 scripts17.ulan 2014-06-01 00:02:05
Конфиг отчета - статистики
Отчет - статистика
ts interface interface2 country_from country_to type count
2011-04-04 12:00:00 comet comet 13 13 read 10933
2011-04-04 13:00:00 comet comet 13 13 read 1698
2011-04-04 12:00:00 comet comet 13 13 send 9637
2011-04-04 13:00:00 comet comet 13 13 send 1168
2011-04-04 12:00:00 comet comet 13 19 read 6
2011-04-04 13:00:00 comet comet 13 19 read 2
2011-04-04 12:00:00 comet comet 13 19 send 3
2011-04-04 13:00:00 comet comet 13 19 send 1
2011-04-04 12:00:00 comet comet 19 13 read 1
2011-04-04 12:00:00 comet comet 19 13 send 1
Primary key
Конфиг отчета multicounter
Отчет - multicounter
ts country_id gender partner_id message_photo_
abuse_deleted
message_photo_ab
use_inappropriate
message_photo_
abuse_ spam
2014-04-17 14:31:00 50 2 1 1 0 0
2014-04-17 14:49:00 13 2 1 1 0 0
2014-04-17 15:08:00 13 2 1 0 1 0
2014-04-17 15:11:00 50 1 1 1 0 0
2014-04-17 15:25:00 13 1 1 1 0 0
2014-04-17 15:31:00 50 2 1 1 0 0
2014-04-17 15:34:00 50 1 1 1 0 0
2014-04-17 15:48:00 50 2 1 1 0 0
2014-04-17 15:57:00 50 2 1 2 0 0
2014-04-17 16:02:00 50 1 1 1 0 0
Primary key
Автоматика в БД
• В имени таблицы должна быть дата
• Таблицу надо не забыть создать
• А что, если надо поменять типы/набор данных?
• А можно ли подчищать старые данные?
Автоматика в БД - пример
Увеличение объемов данных
• Больше пользователей, больше критериев — больше
данных!
• Разбор данных из файлов — можно распараллелить
• Доставка данных в БД — в несколько потоков
А почему все так медленно?
• Промежуточная агрегация — теряем 10 минут
• Графики нужно строить оперативно
• Вообще хочется быстрее!
FastStats
• Ускоряем доставку до <30 секунд
• Делаем все на файлах
• Транзакции и файлы — это реально!
• Полностью прозрачный переход к новому
FastStats
Scribe
Мониторинг
• Работоспособность Scribe'ов
• Количество файлов во временных хранилищах
• Количество неразобранных файлов
• Количество временных таблиц
• Количество файлов по отчетам
• Скорость вставки в базы
Мониторинг — графики
Мониторинг — скорость
Мониторинг — ошибки
Цифры
• 120 000 событий в секунду
• Собираем с 3 000 серверов
• 300 отчетов
• 4 сервера-роутера и 4 сервера для StatsCollector'а
Спасибо за внимание!
Вопросы?
http://fb.com/BadooMoscow
http://vk.com/badoocom
http://twitter.com/BadooDev
http://habrahabr.ru/company/badoo

More Related Content

PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PDF
Загрузка больших объемов данных для бизнес-аналитики
PDF
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
PDF
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PDF
Avito Stachka 2012
PPTX
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Загрузка больших объемов данных для бизнес-аналитики
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Avito Stachka 2012
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
AVITO. Решаем проблемы по мере их поступления. Стачка 2013

What's hot (19)

PDF
SphinxSearch Meetup - Tips&tricks
PDF
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PPTX
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
PDF
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
PPTX
Поиск наизнанку
PPTX
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
PDF
Near-realtime аналитика событий в высоконагруженном проекте
PDF
Нагруженный поиск на Sphinx
PDF
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
PDF
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
PDF
Ровная балансировка нагрузки на фронтенд-кластере
PPTX
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
PPTX
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
PPTX
Jinba - frontendconf.ru/2015
PDF
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
PDF
Cергей Коржнев, 2ГИС
SphinxSearch Meetup - Tips&tricks
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Поиск наизнанку
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Near-realtime аналитика событий в высоконагруженном проекте
Нагруженный поиск на Sphinx
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Ровная балансировка нагрузки на фронтенд-кластере
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Jinba - frontendconf.ru/2015
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Cергей Коржнев, 2ГИС
Ad

Viewers also liked (20)

PPTX
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
PDF
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
PDF
Near-realtime аналитика событий в высоконагруженном проекте
PDF
"Развитие ветки PHP-7"
PPT
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
PDF
Мобильный веб: назад в будущее
PPTX
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
PDF
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
PDF
"Производительность MySQL: что нового?"
PDF
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
PDF
Технологии vs коммуникации: что важнее?
PDF
Как автотесты ускоряют релизы в OK.ru
PDF
Golang в avito
PDF
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
PPTX
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
PPTX
Как мы готовим MySQL
PDF
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
PDF
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
PPTX
Двоичное кодирование информации
PDF
Mikhail Lebedinkiy iAIST the first pure ukrainian corporate erp and bi cloud ...
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Near-realtime аналитика событий в высоконагруженном проекте
"Развитие ветки PHP-7"
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
Мобильный веб: назад в будущее
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Производительность MySQL: что нового?"
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
Технологии vs коммуникации: что важнее?
Как автотесты ускоряют релизы в OK.ru
Golang в avito
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
Как мы готовим MySQL
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Двоичное кодирование информации
Mikhail Lebedinkiy iAIST the first pure ukrainian corporate erp and bi cloud ...
Ad

Similar to Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и меня посчитал!" (12)

PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PPT
Cистема внутренней статистики Odnoklassniki.ru
PDF
Арсен Мукучян, AdRiver
PDF
Presentation highload-2011-openstat-myakshin - копия
PDF
Управляемый Code injection (Михаил Якшин)
PDF
Максим Кулиш — OWOX-Russia — ICBDA2016
PDF
Архитектура А/Б тестирования: сделай сам
PDF
Cергей Aверин, Badoo
PPT
Highload2009 Top100 V3
PDF
Всеволод Поляков "История одного мониторинга"
PPTX
продуктовая статистика в мобильных приложениях
PPT
Hl2008 Spy Log Architechture 169
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Cистема внутренней статистики Odnoklassniki.ru
Арсен Мукучян, AdRiver
Presentation highload-2011-openstat-myakshin - копия
Управляемый Code injection (Михаил Якшин)
Максим Кулиш — OWOX-Russia — ICBDA2016
Архитектура А/Б тестирования: сделай сам
Cергей Aверин, Badoo
Highload2009 Top100 V3
Всеволод Поляков "История одного мониторинга"
продуктовая статистика в мобильных приложениях
Hl2008 Spy Log Architechture 169

More from Badoo Development (20)

PDF
Viktar Karanevich – iOS Parallel Automation
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PDF
Григорий Джанелидзе, OK.RU
PPTX
Андрей Сидоров, Яндекс.Браузер
PDF
Филипп Уваров, Avito
PDF
Cocoaheads Meetup / Alex Zimin / Swift magic
PDF
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
PDF
Alex Krasheninnikov – Hadoop High Availability
PDF
Андрей Денисов – В ожидании мониторинга баз данных
PDF
Александр Зобнин, Grafana Labs
PDF
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
PDF
TechLeads meetup: Алексей Рыбак, Badoo
PPTX
TechLeads meetup: Евгений Потапов, ITSumma
PDF
TechLeads meetup: Макс Лапшин, Erlyvideo
PPTX
Архитектура хранения и отдачи фотографий в Badoo
PDF
5 способов деплоя PHP-кода в условиях хайлоада
PDF
ChromeDriver Jailbreak
PDF
Git хуки на страже качества кода
PDF
Versioning strategy for a complex internal API
PDF
Как мы готовим MySQL
Viktar Karanevich – iOS Parallel Automation
Как мы делаем модули PHP в Badoo – Антон Довгаль
Григорий Джанелидзе, OK.RU
Андрей Сидоров, Яндекс.Браузер
Филипп Уваров, Avito
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Alex Krasheninnikov – Hadoop High Availability
Андрей Денисов – В ожидании мониторинга баз данных
Александр Зобнин, Grafana Labs
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Макс Лапшин, Erlyvideo
Архитектура хранения и отдачи фотографий в Badoo
5 способов деплоя PHP-кода в условиях хайлоада
ChromeDriver Jailbreak
Git хуки на страже качества кода
Versioning strategy for a complex internal API
Как мы готовим MySQL

Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и меня посчитал!"