CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

44
Мониторинг API Ostrovok.ru Павел Власов, разработчик март 2013

description

 

Transcript of CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

Page 1: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

Мониторинг API Ostrovok.ru

Павел Власов, разработчикмарт 2013

Page 2: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

Содержание

1. Ostrovok.ru

2. Информация про API

3. Проблематика

4. Почему мы мониторим API?

5. Реализация

6. Преимущества

7. Мониторинг это просто

2

Page 3: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

1. Ostrovok.ru

• Удобный сервис бронирования отелей• Дружная команда из 200+ человек

• Быстро растём и движемся вперёд

3

Page 4: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

2. Что такое API ostrovok.ru

• Веб-сервис с основными методами продукта (бронирование и поиск отелей)

• Ответ в формате XML/JSON

4

Page 5: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

2. Способы использования API

• Без хранения данных у клиента (вся обработка запросов идет на лету)

• Храним некоторые данные у партнёра (обновляем отели ежедневно)

5

Page 6: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

2. Кто использует API

• Сайты сравнивающие цены

• Партнеры продающие наши отели, через свои веб-сервисы

• Мобильное приложение (Iphone, Android)

6

Page 7: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

2. Какие требования к API

• ~ 100 запросов в секунду в пике

• Партнёры накладывают ограниченияна максимальное время (Yandex - 200 мс)

• Нагрузка на API выросла в 4 раза за полгода

Page 8: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

3. С чем мы столкнулись?

8

• Большое количество клиентов• Неизвестная эффективность обработки запросов

• Нет оповещения о серьезных проблемах

Page 9: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

3. Эксперименты партнёров

• Возникают глупые ошибки

• Разработчикам приходится заниматься их поддержкой

9

Page 10: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

3. Активность партнёров

• Новые• Активные• Неактивные (N дней)

• Внутренние (для тестов)

Текущие статусы:

10

Page 11: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

3. Реверс–инжиниринг

• Полная картина использования API

• Помощь партнёру, если он что-тоделает не так (и мы видим это)

11

Page 12: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Дашборд с ключевыми метриками• Анализ запросов в реальном времени

• Понимание как партнёры работают с нами

12

3. Необходим мониторинг API

Page 13: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Бизнеса• Разработки

13

4. C помощью мониторинга мы решаем задачи:

Page 14: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Отслеживание эффективности партнёров• Выполнение требований партнёров

14

4. Задачи бизнеса

Page 15: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Снижение количества некоректных запросов• Какие ошибки возникают на определенной версии мобильного приложения

• Уменьшение времени ответа на запрос

15

4. Задачи разработки

Page 16: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Отладка алгоритма ограничения числа запросов в секунду

• Прогнозирование нагрузки на сервер

16

4. Задачи разработки

Page 17: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Пытаются закэшировать данные за 40 лет :)

• Забывают выключить нагрузочные тесты• И просто неправильно используют API

17

4. Примеры любознательности

Page 18: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

4. Мы стараемся не нервничать

18

Page 19: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru19

График количества запросов в минуту

Запросы с HTTP-статусом 200Запросы с HTTP-статусом != 200

Page 20: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru20

График времени ответа

Среднее время ответаПороговое значениеМаксимальное время ответа

Page 21: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Выбор из готовых решений

• Готовые решения (Zabbix, Munin)

• Разработка и изменение графиков – не быстрый процесс

• Не такие гибкие как требуют наши задачи

21

Page 22: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Munin

• аггрегация по дням/неделям/месяцам

22

Page 23: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Zabbix

• Выстрел из пушки по воробьям

23

Page 24: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Cвой мониторинг API

• Perl

• PSGI/Plack (аналог WSGI в Python, Rack в Ruby)

• MySQL

• Bootstrap

24

Page 25: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Реализация

25

Logs server

API Мониторинг

rsyncPerl scripts

MySQLPerl App

Plack Браузер

Page 26: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Как парсим логи?

• Собираем все логи на одном сервере

• С помощью rsync забираем их

• Perl скрипты парсят логи и заполняют БД

26

Page 27: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Какие логи используем?

• access.log от Nginx (не требуют изменения в существующем API)

• timings.log (код замеряет время потраченное на определённые уровни работы API)

27

Page 28: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Как всё хранится в MySQL?

• Детальная информация за 3 месяца

• Аггрегируем данные в прошлом до часа

• Поэтому БД работает нормально

28

Page 29: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. А как узнаем партнеров?

• В запросе передается специальный параметр

• id партнёра + подпись запроса

29

Page 30: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Поддержка партнеров

• Есть удобная web-консоль

• Легкое воспроизведение запросов к API

• Службе поддержки не нужно отвлекать разработчиков

30

Page 31: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru31

Page 32: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Реализация

• google graph

• dygraphs.com (графики c СКО)

• highcharts.com (количество точек > 10K)

32

Графики на клиенте:

Page 33: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru33

График времени ответа с использование dygraph

Среднее время ответаПороговое значениеМаксимальное время ответа

Page 34: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

5. Реализация

• jQuery Sparklines

• Информативные и удобные

Для дашборда нужны небольшие графики

34

Page 35: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru35

jQuery Sparklines

Page 36: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

6. Преимущества

• Диагностика API

• Реагирование на воздействие изменений ядра продукта на API

• Улучшение производительности API

36

Page 37: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

• Определяем на каком уровне возникла проблема (БД и т.д.)

• Анализ любых странных действий• Получение статистических данных для других команд

37

6. Преимущества

Page 38: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

7. Мониторинг это просто

• Время ответа• Количество ошибок• Запросы попадающие под лимит

38

Выбраем метрики:

Page 39: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

7. Период детализации

• День, неделя, месяц• По дням• Прогнозирование

39

Page 40: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

7. Пересчет данных

• Добавление новых метрик• Важно ли вам в любой момент пересчитать все данные

40

Page 41: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

7. Возможные решения

• Zabbix

• Munin

• StatsD + Librato

• Написать свое

41

Page 42: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

7. Оповещения

• Определить лимиты• Оповещение должно быть умным• SMS / Email

42

Page 43: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

ostrovok.ru

Выводы

• Мониторинг это важно• Несложная реализация• Необязательно использовать готовые решения

43

Page 44: CodeFest 2013. Власов П. — Мониторинг API Ostrovok.ru

Cпасибо за внимание!Вопросы?

Павел Власов[email protected]