codefest 2013. Власов П. — Мониторинг api ostrovok.ru
DESCRIPTION
TRANSCRIPT
![Page 1: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/1.jpg)
Мониторинг API Ostrovok.ru
Павел Власов, разработчикмарт 2013
![Page 2: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/2.jpg)
ostrovok.ru
Содержание
1. Ostrovok.ru
2. Информация про API
3. Проблематика
4. Почему мы мониторим API?
5. Реализация
6. Преимущества
7. Мониторинг это просто
2
![Page 3: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/3.jpg)
ostrovok.ru
1. Ostrovok.ru
• Удобный сервис бронирования отелей• Дружная команда из 200+ человек
• Быстро растём и движемся вперёд
3
![Page 4: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/4.jpg)
ostrovok.ru
2. Что такое API ostrovok.ru
• Веб-сервис с основными методами продукта (бронирование и поиск отелей)
• Ответ в формате XML/JSON
4
![Page 5: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/5.jpg)
ostrovok.ru
2. Способы использования API
• Без хранения данных у клиента (вся обработка запросов идет на лету)
• Храним некоторые данные у партнёра (обновляем отели ежедневно)
5
![Page 6: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/6.jpg)
ostrovok.ru
2. Кто использует API
• Сайты сравнивающие цены
• Партнеры продающие наши отели, через свои веб-сервисы
• Мобильное приложение (Iphone, Android)
6
![Page 7: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/7.jpg)
ostrovok.ru
2. Какие требования к API
• ~ 100 запросов в секунду в пике
• Партнёры накладывают ограниченияна максимальное время (Yandex - 200 мс)
• Нагрузка на API выросла в 4 раза за полгода
![Page 8: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/8.jpg)
ostrovok.ru
3. С чем мы столкнулись?
8
• Большое количество клиентов• Неизвестная эффективность обработки запросов
• Нет оповещения о серьезных проблемах
![Page 9: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/9.jpg)
ostrovok.ru
3. Эксперименты партнёров
• Возникают глупые ошибки
• Разработчикам приходится заниматься их поддержкой
9
![Page 10: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/10.jpg)
ostrovok.ru
3. Активность партнёров
• Новые• Активные• Неактивные (N дней)
• Внутренние (для тестов)
Текущие статусы:
10
![Page 11: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/11.jpg)
ostrovok.ru
3. Реверс–инжиниринг
• Полная картина использования API
• Помощь партнёру, если он что-тоделает не так (и мы видим это)
11
![Page 12: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/12.jpg)
ostrovok.ru
• Дашборд с ключевыми метриками• Анализ запросов в реальном времени
• Понимание как партнёры работают с нами
12
3. Необходим мониторинг API
![Page 13: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/13.jpg)
ostrovok.ru
• Бизнеса• Разработки
13
4. C помощью мониторинга мы решаем задачи:
![Page 14: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/14.jpg)
ostrovok.ru
• Отслеживание эффективности партнёров• Выполнение требований партнёров
14
4. Задачи бизнеса
![Page 15: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/15.jpg)
ostrovok.ru
• Снижение количества некоректных запросов• Какие ошибки возникают на определенной версии мобильного приложения
• Уменьшение времени ответа на запрос
15
4. Задачи разработки
![Page 16: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/16.jpg)
ostrovok.ru
• Отладка алгоритма ограничения числа запросов в секунду
• Прогнозирование нагрузки на сервер
16
4. Задачи разработки
![Page 17: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/17.jpg)
ostrovok.ru
• Пытаются закэшировать данные за 40 лет :)
• Забывают выключить нагрузочные тесты• И просто неправильно используют API
17
4. Примеры любознательности
![Page 18: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/18.jpg)
ostrovok.ru
4. Мы стараемся не нервничать
18
![Page 19: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/19.jpg)
ostrovok.ru19
График количества запросов в минуту
Запросы с HTTP-статусом 200Запросы с HTTP-статусом != 200
![Page 20: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/20.jpg)
ostrovok.ru20
График времени ответа
Среднее время ответаПороговое значениеМаксимальное время ответа
![Page 21: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/21.jpg)
ostrovok.ru
5. Выбор из готовых решений
• Готовые решения (Zabbix, Munin)
• Разработка и изменение графиков – не быстрый процесс
• Не такие гибкие как требуют наши задачи
21
![Page 22: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/22.jpg)
ostrovok.ru
5. Munin
• аггрегация по дням/неделям/месяцам
22
![Page 23: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/23.jpg)
ostrovok.ru
5. Zabbix
• Выстрел из пушки по воробьям
23
![Page 24: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/24.jpg)
ostrovok.ru
5. Cвой мониторинг API
• Perl
• PSGI/Plack (аналог WSGI в Python, Rack в Ruby)
• MySQL
• Bootstrap
24
![Page 25: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/25.jpg)
ostrovok.ru
5. Реализация
25
Logs server
API Мониторинг
rsyncPerl scripts
MySQLPerl App
Plack Браузер
![Page 26: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/26.jpg)
ostrovok.ru
5. Как парсим логи?
• Собираем все логи на одном сервере
• С помощью rsync забираем их
• Perl скрипты парсят логи и заполняют БД
26
![Page 27: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/27.jpg)
ostrovok.ru
5. Какие логи используем?
• access.log от Nginx (не требуют изменения в существующем API)
• timings.log (код замеряет время потраченное на определённые уровни работы API)
27
![Page 28: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/28.jpg)
ostrovok.ru
5. Как всё хранится в MySQL?
• Детальная информация за 3 месяца
• Аггрегируем данные в прошлом до часа
• Поэтому БД работает нормально
28
![Page 29: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/29.jpg)
ostrovok.ru
5. А как узнаем партнеров?
• В запросе передается специальный параметр
• id партнёра + подпись запроса
29
![Page 30: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/30.jpg)
ostrovok.ru
5. Поддержка партнеров
• Есть удобная web-консоль
• Легкое воспроизведение запросов к API
• Службе поддержки не нужно отвлекать разработчиков
30
![Page 31: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/31.jpg)
ostrovok.ru31
![Page 32: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/32.jpg)
ostrovok.ru
5. Реализация
• google graph
• dygraphs.com (графики c СКО)
• highcharts.com (количество точек > 10K)
32
Графики на клиенте:
![Page 33: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/33.jpg)
ostrovok.ru33
График времени ответа с использование dygraph
Среднее время ответаПороговое значениеМаксимальное время ответа
![Page 34: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/34.jpg)
ostrovok.ru
5. Реализация
• jQuery Sparklines
• Информативные и удобные
Для дашборда нужны небольшие графики
34
![Page 35: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/35.jpg)
ostrovok.ru35
jQuery Sparklines
![Page 36: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/36.jpg)
ostrovok.ru
6. Преимущества
• Диагностика API
• Реагирование на воздействие изменений ядра продукта на API
• Улучшение производительности API
36
![Page 37: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/37.jpg)
ostrovok.ru
• Определяем на каком уровне возникла проблема (БД и т.д.)
• Анализ любых странных действий• Получение статистических данных для других команд
37
6. Преимущества
![Page 38: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/38.jpg)
ostrovok.ru
7. Мониторинг это просто
• Время ответа• Количество ошибок• Запросы попадающие под лимит
38
Выбраем метрики:
![Page 39: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/39.jpg)
ostrovok.ru
7. Период детализации
• День, неделя, месяц• По дням• Прогнозирование
39
![Page 40: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/40.jpg)
ostrovok.ru
7. Пересчет данных
• Добавление новых метрик• Важно ли вам в любой момент пересчитать все данные
40
![Page 41: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/41.jpg)
ostrovok.ru
7. Возможные решения
• Zabbix
• Munin
• StatsD + Librato
• Написать свое
41
![Page 42: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/42.jpg)
ostrovok.ru
7. Оповещения
• Определить лимиты• Оповещение должно быть умным• SMS / Email
42
![Page 43: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru](https://reader031.vdocuments.mx/reader031/viewer/2022013121/5478eb3ab479598a098b461f/html5/thumbnails/43.jpg)
ostrovok.ru
Выводы
• Мониторинг это важно• Несложная реализация• Необязательно использовать готовые решения
43