520 likes | 722 Views
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр. Александр Сербул Руководитель направления контроля качества интеграции и внедрений. А зачем мониторить веб-проекты?. Клиенты чутко реагируют на доступность и скорость веб-проекта – днем … и ночью
E N D
Мониторинг веб-проектов:штаб оперативного реагированияи аналитический центр Александр Сербул Руководитель направления контроля качества интеграции и внедрений
А зачем мониторить веб-проекты? • Клиенты чутко реагируют на доступность и скорость веб-проекта – днем … и ночью • Вашу веб-систему есть с чем сравнить - Google, Facebook, Twitter … • Вас рассматривают «под лупой», обсуждая недостатки в соцсетях и Twitter!
А зачем мониторить веб-проекты? • «У них сайт часто зависает и глючит. В делах, видимо, еще больший бардак!» • «Они потеряли мои данные. Как скоро их ждать на диске на Горбушке?» • У Клиентов обострился вкус на качество веб-систем, они ждут больше и «чтобы побыстрее»
Весь офис вышел «покурить» • Часть бизнес-процессов компании/проекта завязана на веб-интерфейс – узкое место • Чем медленнее веб-админки, тем медленнее работает ваш бизнес
Ой, мощностей не хватает со вчера! • Отдел продаж в конце месяца – «завесил» 20 образовательных проектов на сутки • При начислении зарплаты – сайты открываются по минуте • База данных «внезапно» перестала справляться с нагрузкой… Канал просел… Провайдер заглючил…
Веб-лицо компании/проекта – должно нравиться и располагать к действию!
Клиент должен ощущать надежность веб-решения, легкость и стиль Красный «кабриолет» Зеленый «лимузин»
Прежде всего - люди • Сотрудник/группа эксплуатации – с подлинным техническим образованием • Люди либо с опытом, либо … учатся на вашем проекте и Клиентах • Админ «Петя» за $500и телефон подключит, и … сервера настроит
Прежде всего - люди • Понимание Unix/Linux изнутри и сетевых протоколов, RFC • Способность иногда «программировать» на bash (приветствуется - perl, C и др.) • Некий «гибрид» разработчика и администратора • «Ищем сисадмина:Windows Visa/7/Free BSD/Open BSD/Net BSD/Solaris/Cisco/IP телефония, С, С++, Java. Умение верстать, JS, разбираться в чужом коде, таскать коробки и работать в Agile команде»
Стиль работы – «Ослик» • Подход «жертвы»: • «Вы скажите, позвоните, напишите, напомните – мы же умные, мы - сделаем». Сделают, но Клиент уже прокатится на «красном кабриолете» • «Ой, мы потеряли данные клиентов. Сейчас настроим бэкап» • «Сейчас все сделаю и за полдня – все заново протестирую»
Стиль работы – «Штурман» • Проактивность. Узнать раньше Клиента о проблеме или одновременно. • Скорость. Автоматизировать решение типовых задач – не тянуть резину по 2-3 дня. • Системный подход. Не наступать на одни грабли 2 раза подряд. Фиксировать детали аварии. • Заглядывать за горизонт. Сбор и анализ трендов, закупка оборудования, увеличение мощностей.
Дальше – детали и технический хардкор
Что мониторим прежде всего? • Наличие свежих бэкапов! • Учения по восстановлению из бэкапов – прошли недавно, успешно • Доступность «морды» сайтов – снаружи. Желательно из нескольких точек (ping-admin.ru, host-tracker.com …) • Срок действия SSL-сертификатов • Доступность «админок» – изнутри • … • Наличие свежих бэкапов!
Чем мониторим • Nagios(www.nagios.org) • Zabbix (www.zabbix.com/ru/) • Регистрация событий в журнале для аудита и анализа, e-mail/SMS – уведомления, свои обработчики событий.
Чем мониторим • Заведите машину мониторинга, если проектов много, «копейка рубль бережет» • Важно мониторить сам сервер мониторинга из другого ДЦ
Что мониторить на сервере • Базовые тесты сервера – ставим везде • Тесты критичного софта – иногда • Тесты mysql и другой БД – отдельная интересная тема для DBA • «Комплексные» тесты – ставим на машину мониторинга
Базовые тесты сервера • Минимум, без которого - ну никак нельзя vmstat
Тесты критичного софта • Для критичного софта: считаем число процессов, объем RSS, %CPU, process system/user time
Тесты БД • Привожу пример для MySQL
Мониторинг MySQL Гистограмма времени обработки запросов (Percona)
Мониторинг операционной системы Очень полезные утилиты: atop, apachetop, innotop atop (www.atoptool.nl):
Мониторинг операционной системы apachetop (freecode.com/projects/apachetop) – гистограмма запросов к apache - онлайн
Мониторинг БД innotop (code.google.com/p/innotop)
Мониторинг веб-приложения Лог работы скрипта (>) – обновился за N часов Лог ошибокработы скрипта (2>)– должен быть пуст
Pinba! • http://pinba.org • Плагин для PHP + cпециальныйstorage для MySQL • Онлайн агрегатор хитов • UDP-пакеты • Тэги позволяют гибко получать информацию о различных показателях веб-приложения • Уже установили? Правильно
Мониторинг веб-приложения Число ошибок в хитах за 15 минут - меньше L Макс. время хита (тэга pinba) – меньше M сек. Макс. использование памяти хитом – меньше N МБ Графики рисует простой плагин для munin
Мониторинг веб-приложения «Стоимость» хита в процессором времени - pinba Графики рисует простой плагин для munin
Мониторинг веб-приложения Хиты в разрезе - pinba Графики рисует простой плагин для munin
Мониторинг веб-приложения Гистограммы распределения времени хитов, памяти, кодам ответа – из логов (awk-скрипт) Общая температура «по палате»
Аналитика • Видим, что было • Предвидим, что будет • Улавливаем тренды • Планируем мощности железа • Сравниваем настройки софта • Веб-система перестает быть черным ящиком, видно ее развитие с течением времени
Аналитика Апачи MaxClients = StartServers = MinSpareServers = MaxSpareServers < 20-30
Аналитика Nginx
Аналитика - MySQL Следите за числом потоков на БД! 100 уже немало
Аналитика - MySQL Кэш запросов иногда эффективнее отключить
Аналитика - MySQL Медленные запросы – часто признак проблемы
Аналитика Память Apache MaxClients MySQL buffers … Нужно «прикинуть» максимальный расход памяти в приложениях и следить за ней
Аналитика Уход в swap. На графике машина - зависла. Скорость работы с диском на несколько порядков ниже. Нужно стараться избегать своппинга.
Аналитика Дисковая подсистема
Аналитика Дисковая подсистема iostat
Аналитика Сеть
Аналитика Нагрузка
Аналитика Нагрузка
Аналитика memcached
Действия при аварии • Нужно быстро понять – где и как починить • Смотрим срабатывание тестовnagios – часто единственный источник информации • Смотрим почту от nagios • Смотрим логи. Держим заготовленные скипты-парсеры логовна поиск ошибок. • Вот тут наливаем чай • Смотримграфики munin, базу pinba • Если получается, запускаем инструменты поиска узких мест
Инструменты поиска узких мест Apache /server-status Включенные логи медленных запросов php-fpm, nginx, apache, mysql
Инструменты поиска узких мест XHProf, pinba, XDebug
Инструменты поиска узких мест • XHProf (github.com/facebook/xhprof) • Почти не создает нагрузку на бою • Можно быстро найти корень проблемы • Полезно автоматически сохранятьтрейсы долгих страниц • … и анализировать их с разработчиками
Инструменты поиска узких мест • XDebug (xdebug.org) • Cоздает ощутимую нагрузку на бою • Можно снимать трейсы выполнения веб-страниц • Часто – незаменимый инструмент
Инструменты поиска узких мест • Старые, добрые утилиты unix • strace • gdb • gdb –p 123456 • (gdb) source /src/php-5.3.19/.gdbinit • (gdb) dump_btexecutor_globals.current_execute_data • [0x0252d628] stemming() /var/www/html/bitrix/modules/search/tools/stemming.php:231 [0x0252bc78] stemming() /var/www/html/bitrix/modules/search/classes/mysql/search.php:1090 [0x02525ec8] StemIndex() /var/www/html/bitrix/modules/search/classes/general/search.php:1332 [0x025223f8] Index() /var/www/html/bitrix/modules/iblock/classes/general/iblockelement.php:4857 [0x0251b670] UpdateSearch() /var/www/html/bitrix/modules/iblock/classes/general/iblockelement.php:3295 [0x02519c40] Add() /var/www/html/bitrix/modules/crm/classes/general/crm_webdav_helper.php:486 [0x02514010] SaveEmailAttachment() /var/www/html/bitrix/modules/crm/classes/general/crm_email.php:867 [0x065c2030] EmailMessageAdd() [0x0250fcc8] call_user_func_array() /var/www/html/bitrix/modules/mail/classes/general/mail.php:2477 …