06_Serbul PPTX, 7 МБ

Report
Мониторинг веб-проектов:
штаб оперативного реагирования
и аналитический центр
Александр Сербул
Руководитель направления контроля качества интеграции и внедрений
А зачем мониторить веб-проекты?
Клиенты чутко реагируют на доступность и
скорость веб-проекта – днем … и ночью
Вашу веб-систему есть с чем сравнить - 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_bt executor_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
…
Автоматизация жизнеобеспечения
Пишем хандлеры для nagios/zabbix
Можно поиграться с Pacemaker
Чем проще – тем лучше!
С удовольствием пообщаюсь на эту
тему в кулуарах 
Спасибо за внимание!
Вопросы?
Александр Сербул
[email protected]
@AlexSerbul

similar documents