![Page 1: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/1.jpg)
Мониторинг всех слоев web проектаНиколай Сивко
![Page 2: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/2.jpg)
Мотивация 1 минута простоя hh.ru днем в будни
затрагивает ~30000 пользователей
~15 * HL++
![Page 3: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/3.jpg)
Задачи• Узнать, что сломалось
• Быстро узнать, где сломалось
• Увидеть, что починилось
• Capacity planning
• Планирование оптимизаций
• Контроль оптимизаций
![Page 4: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/4.jpg)
Поговорим• На какие метрики нужно смотреть, если вы
эксплуатируете web проект
• Как смотреть на метрики, чтобы быстро понимать, что происходит
![Page 5: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/5.jpg)
Не затронем сегодня• Инструменты: чем рисовать графики, как
скрещивать разные решения и т.д.
• Алерты: имея нужные метрики, сделать проверку триггеров не так сложно
• Методология: workflow, KPI http://www.slideshare.net/NikolaySivko/rootconf2015
![Page 6: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/6.jpg)
hh.ru
![Page 7: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/7.jpg)
Физический смысл• Видеть, как работает система с точки зрения
пользователя
• Видеть, что происходит в каждой подсистеме
• На что уходят ресурсы
• На все это надо смотреть во времени: как было минуту назад, вчера, в прошлый понедельник
![Page 8: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/8.jpg)
![Page 9: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/9.jpg)
Navigation timing API• js снипет отстреливает метрики на сервер GET
запросом с параметрами
• location = /stat { return 204; access_log /var/log/nginx/clientstat.access.log; }
• парсим лог
![Page 10: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/10.jpg)
Client-side timers
![Page 11: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/11.jpg)
![Page 12: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/12.jpg)
Работает ли сайт?• Есть ли ошибки? Сколько?
• Быстро или медленно? У одного пользователя или у всех?
• Сколько запросов? Как обычно/провал/боты?
• Не тупит ли канал до клиентов?
![Page 13: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/13.jpg)
Всё есть в логе nginx• Конечно, стандартный формат “combined” нам не
подходит
• $request_time
• $upstream_response_time
• Опционально: $upstream_addr, $upstream_status, $upstream_cache_status
![Page 14: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/14.jpg)
$request_time
![Page 15: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/15.jpg)
$upstream_response_t
![Page 16: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/16.jpg)
HTTP-5xx
![Page 17: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/17.jpg)
HTTP-5xx by URL
![Page 18: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/18.jpg)
5xx + 4xx + bots
![Page 19: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/19.jpg)
$bytes_sent
![Page 20: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/20.jpg)
Про урлы• Ручные правила для парсинга основных урлов
устаревают
• Нормализация: /vacancy/123?arg=value -> /vacancy/$id
• Динамический top урлов (по rps или сумме$upstream_response_time)
• Можно отдельный top по ошибкам, но с отсечкой снизу, чтобы не было мусора
![Page 21: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/21.jpg)
Балансировка
![Page 22: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/22.jpg)
![Page 23: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/23.jpg)
На что уходит время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
![Page 24: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/24.jpg)
Страница вакансии
![Page 25: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/25.jpg)
Чем занят кластер?
![Page 26: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/26.jpg)
Шаблонизация2015-10-14 15:12:00,865 INFO: applied XSL ambient/pages/vacancy/view.xsl in 22.50ms
![Page 27: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/27.jpg)
Что оптимизировать?
![Page 28: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/28.jpg)
Видим результат
![Page 29: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/29.jpg)
![Page 30: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/30.jpg)
Какой сервис сломался
![Page 31: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/31.jpg)
![Page 32: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/32.jpg)
Опять стадии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;
![Page 33: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/33.jpg)
Log -> metrics
![Page 34: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/34.jpg)
![Page 35: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/35.jpg)
Не поплохело ли PG?
![Page 36: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/36.jpg)
Чем занят CPU PG?
![Page 37: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/37.jpg)
Кто грузит диски?
![Page 38: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/38.jpg)
Кто грузит диски?
![Page 39: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/39.jpg)
![Page 40: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/40.jpg)
Вопросы про сеть• Сервис hhsession ждал ответа от hhid 150ms
• Сервис hhid считает, что он ответил на этот запрос за 5ms (тот же request_id)
• “Между ними только сеть”
• Результатов ping за вчера между ЭТИМИ хостами у вас нет
• Как исключить сеть?
![Page 41: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/41.jpg)
TCP RTT• TCP Round-Trip Time - время от отправки пакета
до получения ACK
• Стоит рассматривать как некий тренд, не нужно пытаться сравнивать с ICMP RTT
![Page 42: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/42.jpg)
TCP очень сложный
* www.cs.virginia.edu/~cs458/slides/module15-tcp3V2.ppt
![Page 43: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/43.jpg)
Что с этим делать• Периодически снимаем со всех хостов RTT всех
текущих соединений
• Делаем агрегаты для всех remote_ip + listen_port в пределах вашего сегмента сети (перцентиль)
• Сможем увидеть, как вела себя сеть между нужными хостами
![Page 44: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/44.jpg)
7ms при ping ~ 0.8ms
![Page 45: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/45.jpg)
Немного про OS• cpu• memory• disk• disk i/o• net interfaces• swap• swap i/o
![Page 46: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/46.jpg)
Что это было?
![Page 47: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/47.jpg)
Процессы• 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
![Page 48: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/48.jpg)
pg_dump + pbzip2
![Page 49: Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)](https://reader035.vdocuments.pub/reader035/viewer/2022062412/586f90f81a28ab54768b7a95/html5/thumbnails/49.jpg)
Итого• Простые графики могут сильно ускорить поиск
проблемы
• Постарайтесь покрыть мониторингом все подсистемы (а особенно стыки между ними)
• Чем детальнее метрики, тем проще потом разбираться