Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Мониторинг
всех слоев web
проекта
Николай Сивко
Мотивация
1 минута простоя hh.ru днем в будни
затрагивает ~30000 пользователей
~15 * HL++
Задачи
• Узнать, что сломалось
• Быстро узнать, где сломалось
• Увидеть, что починилось
• Capacity planning
• Планирование...
Поговорим
• На какие метрики нужно смотреть, если вы
эксплуатируете web проект
• Как смотреть на метрики, чтобы быстро пон...
Не затронем сегодня
• Инструменты: чем рисовать графики, как скрещивать
разные решения и т.д.
• Алерты: имея нужные метрик...
hh.ru
Физический смысл
• Видеть, как работает система с точки зрения
пользователя
• Видеть, что происходит в каждой подсистеме
•...
Navigation timing API
• js снипет отстреливает метрики на сервер GET запросом
с параметрами
• location = /stat {
return 20...
Client-side timers
Работает ли сайт?
• Есть ли ошибки? Сколько?
• Быстро или медленно? У одного пользователя или у
всех?
• Сколько запросов? ...
Всё есть в логе nginx
• Конечно, стандартный формат “combined” нам не
подходит
• $request_time
• $upstream_response_time
•...
$request_time
$upstream_response_t
HTTP-5xx
HTTP-5xx by URL
5xx + 4xx + bots
$bytes_sent
Про урлы
• Ручные правила для парсинга основных урлов
устаревают
• Нормализация: /vacancy/123?arg=value -> /vacancy/$id
• ...
Балансировка
На что уходит время
2015-10-14 15:12:00,904 INFO: timings for
xhh.pages.vacancy.Page :
prepare=0.83
session=4.99
page=123....
Страница вакансии
Чем занят кластер?
Шаблонизация
2015-10-14 15:12:00,865 INFO: applied XSL
ambient/pages/vacancy/view.xsl in 22.50ms
Что оптимизировать?
Видим результат
Какой сервис сломался
Опять стадии
2015-10-21 10:47:10.532 [Grizzly-worker(14)] INFO
r.hh.health.monitoring.TimingsLogger: response: 200; contex...
Log -> metrics
Не поплохело ли PG?
Чем занят CPU PG?
Кто грузит диски?
Кто грузит диски?
Вопросы про сеть
• Сервис hhsession ждал ответа от hhid 150ms
• Сервис hhid считает, что он ответил на этот запрос за
5ms ...
TCP RTT
• TCP Round-Trip Time - время от отправки пакета до
получения ACK
• Стоит рассматривать как некий тренд, не нужно
...
TCP очень сложный
* www.cs.virginia.edu/~cs458/slides/module15-tcp3V2.ppt
Что с этим делать
• Периодически снимаем со всех хостов RTT всех текущих
соединений
• Делаем агрегаты для всех remote_ip +...
7ms при ping ~ 0.8ms
Немного про OS
• cpu
• memory
• disk
• disk i/o
• net interfaces
• swap
• swap i/o
Что это было?
Процессы
• CPU per process+user
• Memory per process+user
• Disk I/O per process+user
• Swap per process+user
• Swap I/O p...
pg_dump + pbzip2
Итого
• Простые графики могут сильно ускорить поиск
проблемы
• Постарайтесь покрыть мониторингом все подсистемы (а
особенн...
Спасибо за внимание!
Вопросы?
Николай Сивко
hh.ru
Email: n.sivko@gmail.com, sivko@hh.ru
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
Мониторинг всех слоев web проекта (hl2015)
Próxima SlideShare
Cargando en…5
×

Мониторинг всех слоев web проекта (hl2015)

3.674 visualizaciones

Publicado el

Highload++ 2015

Publicado en: Ingeniería

Мониторинг всех слоев web проекта (hl2015)

  1. 1. Мониторинг всех слоев web проекта Николай Сивко
  2. 2. Мотивация 1 минута простоя hh.ru днем в будни затрагивает ~30000 пользователей ~15 * HL++
  3. 3. Задачи • Узнать, что сломалось • Быстро узнать, где сломалось • Увидеть, что починилось • Capacity planning • Планирование оптимизаций • Контроль оптимизаций
  4. 4. Поговорим • На какие метрики нужно смотреть, если вы эксплуатируете web проект • Как смотреть на метрики, чтобы быстро понимать, что происходит
  5. 5. Не затронем сегодня • Инструменты: чем рисовать графики, как скрещивать разные решения и т.д. • Алерты: имея нужные метрики, сделать проверку триггеров не так сложно • Методология: workflow, KPI http://www.slideshare.net/NikolaySivko/rootconf2015
  6. 6. hh.ru
  7. 7. Физический смысл • Видеть, как работает система с точки зрения пользователя • Видеть, что происходит в каждой подсистеме • На что уходят ресурсы • На все это надо смотреть во времени: как было минуту назад, вчера, в прошлый понедельник
  8. 8. Navigation timing API • js снипет отстреливает метрики на сервер GET запросом с параметрами • location = /stat { return 204; access_log /var/log/nginx/clientstat.access.log; } • парсим лог
  9. 9. Client-side timers
  10. 10. Работает ли сайт? • Есть ли ошибки? Сколько? • Быстро или медленно? У одного пользователя или у всех? • Сколько запросов? Как обычно/провал/боты? • Не тупит ли канал до клиентов?
  11. 11. Всё есть в логе nginx • Конечно, стандартный формат “combined” нам не подходит • $request_time • $upstream_response_time • Опционально: $upstream_addr, $upstream_status, $upstream_cache_status
  12. 12. $request_time
  13. 13. $upstream_response_t
  14. 14. HTTP-5xx
  15. 15. HTTP-5xx by URL
  16. 16. 5xx + 4xx + bots
  17. 17. $bytes_sent
  18. 18. Про урлы • Ручные правила для парсинга основных урлов устаревают • Нормализация: /vacancy/123?arg=value -> /vacancy/$id • Динамический top урлов (по rps или сумме$upstream_response_time) • Можно отдельный top по ошибкам, но с отсечкой снизу, чтобы не было мусора
  19. 19. Балансировка
  20. 20. На что уходит время 2015-10-14 15:12:00,904 INFO: timings for xhh.pages.vacancy.Page : prepare=0.83 session=4.99 page=123.84 xsl=36.63 postprocess=13.21 finish=0.23 flush=0.49 total=180.21 code=200
  21. 21. Страница вакансии
  22. 22. Чем занят кластер?
  23. 23. Шаблонизация 2015-10-14 15:12:00,865 INFO: applied XSL ambient/pages/vacancy/view.xsl in 22.50ms
  24. 24. Что оптимизировать?
  25. 25. Видим результат
  26. 26. Какой сервис сломался
  27. 27. Опять стадии 2015-10-21 10:47:10.532 [Grizzly-worker(14)] INFO r.hh.health.monitoring.TimingsLogger: response: 200; context: GET /hh-session/full; total time 10 ms; jersey#beforeHandle=+0; HHid#BeforeClient=+0; HHid#Client=+6; DB#getHhSession=+3; pbMappers=+0; makeHeaderSession=+1; currentSessionInBothBodyAndHeader=+0; jersey#afterHandle=+0;
  28. 28. Log -> metrics
  29. 29. Не поплохело ли PG?
  30. 30. Чем занят CPU PG?
  31. 31. Кто грузит диски?
  32. 32. Кто грузит диски?
  33. 33. Вопросы про сеть • Сервис hhsession ждал ответа от hhid 150ms • Сервис hhid считает, что он ответил на этот запрос за 5ms (тот же request_id) • “Между ними только сеть” • Результатов ping за вчера между ЭТИМИ хостами у вас нет • Как исключить сеть?
  34. 34. TCP RTT • TCP Round-Trip Time - время от отправки пакета до получения ACK • Стоит рассматривать как некий тренд, не нужно пытаться сравнивать с ICMP RTT
  35. 35. TCP очень сложный * www.cs.virginia.edu/~cs458/slides/module15-tcp3V2.ppt
  36. 36. Что с этим делать • Периодически снимаем со всех хостов RTT всех текущих соединений • Делаем агрегаты для всех remote_ip + listen_port в пределах вашего сегмента сети (перцентиль) • Сможем увидеть, как вела себя сеть между нужными хостами
  37. 37. 7ms при ping ~ 0.8ms
  38. 38. Немного про OS • cpu • memory • disk • disk i/o • net interfaces • swap • swap i/o
  39. 39. Что это было?
  40. 40. Процессы • CPU per process+user • Memory per process+user • Disk I/O per process+user • Swap per process+user • Swap I/O per process+user • FD usage per process+user
  41. 41. pg_dump + pbzip2
  42. 42. Итого • Простые графики могут сильно ускорить поиск проблемы • Постарайтесь покрыть мониторингом все подсистемы (а особенно стыки между ними) • Чем детальнее метрики, тем проще потом разбираться
  43. 43. Спасибо за внимание! Вопросы? Николай Сивко hh.ru Email: n.sivko@gmail.com, sivko@hh.ru

×