52
Александр Сербул Руководитель направления контроля качества интеграции и внедрений Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Embed Size (px)

Citation preview

Page 1: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Александр СербулРуководитель направления контроля качества интеграции и внедрений

Мониторинг веб-проектов:штаб оперативного реагирования

и аналитический центр

Page 2: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Клиенты чутко реагируют на доступность и

скорость веб-проекта – днем … и ночью

Вашу веб-систему есть с чем сравнить - Google,

Facebook, Twitter …

Вас рассматривают «под лупой», обсуждая

недостатки в соцсетях и Twitter!

А зачем мониторить веб-проекты?

Page 3: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

«У них сайт часто зависает и глючит. В делах,

видимо, еще больший бардак!»

«Они потеряли мои данные. Как скоро их ждать на

диске на Горбушке?»

У Клиентов обострился вкус на качество веб-

систем, они ждут больше и «чтобы побыстрее»

А зачем мониторить веб-проекты?

Page 4: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Часть бизнес-процессов компании/проекта

завязана на веб-интерфейс – узкое место

Чем медленнее веб-админки, тем медленнее

работает ваш бизнес

Весь офис вышел «покурить»

Page 5: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Отдел продаж в конце месяца – «завесил» 20

образовательных проектов на сутки

При начислении зарплаты – сайты открываются по

минуте

База данных «внезапно» перестала справляться с

нагрузкой… Канал просел… Провайдер заглючил…

Ой, мощностей не хватает со вчера!

Page 6: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Веб-лицо компании/проекта – должно нравиться и располагать

к действию!

Page 7: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Клиент должен ощущать надежность веб-решения, легкость и стиль

Красный «кабриолет» Зеленый «лимузин»

Page 8: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Сотрудник/группа эксплуатации – с подлинным

техническим образованием

Люди либо с опытом, либо … учатся на вашем

проекте и Клиентах

Админ «Петя» за $500 и телефон

подключит, и … сервера настроит

Прежде всего - люди

Page 9: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Понимание Unix/Linux изнутри и сетевых

протоколов, RFC

Способность иногда «программировать» на bash

(приветствуется - perl, C и др.)

Некий «гибрид» разработчика и администратора«Ищем сисадмина: Windows Visa/7/Free BSD/Open BSD/Net

BSD/Solaris/Cisco/IP телефония, С, С++, Java. Умение верстать, JS,

разбираться в чужом коде, таскать коробки и работать в Agile

команде»

Прежде всего - люди

Page 10: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Подход «жертвы»:

«Вы скажите, позвоните, напишите, напомните – мы же

умные, мы - сделаем». Сделают, но Клиент уже

прокатится на «красном кабриолете»

«Ой, мы потеряли данные клиентов. Сейчас настроим

бэкап»

«Сейчас все сделаю и за полдня –

все заново протестирую»

Стиль работы – «Ослик»

Page 11: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Проактивность. Узнать раньше Клиента о проблеме или

одновременно.

Скорость. Автоматизировать решение типовых задач – не

тянуть резину по 2-3 дня.

Системный подход. Не наступать на одни грабли 2 раза

подряд. Фиксировать детали аварии.

Заглядывать за горизонт. Сбор и анализ трендов, закупка

оборудования, увеличение мощностей.

Стиль работы – «Штурман»

Page 12: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Стиль работы – «Штурман»

Page 13: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Дальше – детали и технический хардкор

Page 14: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Наличие свежих бэкапов!

Учения по восстановлению из бэкапов – прошли

недавно, успешно

Доступность «морды» сайтов – снаружи. Желательно из

нескольких точек (ping-admin.ru, host-tracker.com …)

Срок действия SSL-сертификатов

Доступность «админок» – изнутри

Наличие свежих бэкапов!

Что мониторим прежде всего?

Page 15: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Nagios (www.nagios.org)

Zabbix (www.zabbix.com/ru/)

Регистрация событий в журнале для аудита и анализа, e-mail/SMS –

уведомления, свои обработчики событий.

Чем мониторим

Page 16: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Заведите машину мониторинга, если проектов много, «копейка

рубль бережет»

Важно мониторить сам сервер мониторинга из другого ДЦ

Чем мониторим

Page 17: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Что мониторить на сервере

Базовые тесты сервера – ставим везде

Тесты критичного софта – иногда

Тесты mysql и другой БД – отдельная интересная

тема для DBA

«Комплексные» тесты – ставим на машину

мониторинга

Page 18: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Базовые тесты сервера

Минимум, без которого - ну никак нельзя

vmstat

Page 19: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Тесты критичного софта

Для критичного софта: считаем число процессов, объем RSS, %CPU,

process system/user time

Page 20: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Тесты БД

Привожу пример для MySQL

Page 21: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг MySQL

Гистограмма времени обработки запросов (Percona)

Page 22: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг операционной системы

Очень полезные утилиты: atop, apachetop, innotop

atop (www.atoptool.nl):

Page 23: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг операционной системы

apachetop (freecode.com/projects/apachetop) – гистограмма запросов к apache - онлайн

Page 24: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг БД

innotop (code.google.com/p/innotop)

Page 25: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг веб-приложения

Лог работы скрипта (>) – обновился за N часов

Лог ошибок работы скрипта (2>) – должен быть пуст

Page 26: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Pinba!

http://pinba.org

Плагин для PHP + cпециальный storage для MySQL

Онлайн агрегатор хитов

UDP-пакеты

Тэги позволяют гибко получать информацию о различных

показателях веб-приложения

Уже установили? Правильно

Page 27: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг веб-приложения

Число ошибок в хитах за 15 минут - меньше LМакс. время хита (тэга pinba) – меньше M сек.

Макс. использование памяти хитом – меньше N МБ

Графики рисует простой плагин для munin

Page 28: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг веб-приложения

Графики рисует простой плагин для munin

«Стоимость» хита в процессором времени - pinba

Page 29: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг веб-приложения

Графики рисует простой плагин для munin

Хиты в разрезе - pinba

Page 30: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Мониторинг веб-приложения

Гистограммы распределения времени хитов, памяти, кодам ответа – из логов (awk-скрипт)

Общая температура «по палате»

Page 31: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Видим, что было

Предвидим, что будет

Улавливаем тренды

Планируем мощности железа

Сравниваем настройки софта

Веб-система перестает быть черным ящиком, видно ее

развитие с течением времени

Page 32: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Апачи

MaxClients = StartServers = MinSpareServers = MaxSpareServers < 20-30

Page 33: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Nginx

Page 34: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика - MySQL

Следите за числом потоков на БД! 100 уже немало

Page 35: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика - MySQL

Кэш запросов иногда эффективнее отключить

Page 36: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика - MySQL

Медленные запросы – часто признак проблемы

Page 37: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Память

Apache MaxClients

MySQL buffers …

Нужно «прикинуть» максимальный расход памяти в приложениях и следить за ней

Page 38: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Уход в swap. На графике машина - зависла.

Скорость работы с диском на несколько порядков ниже. Нужно стараться избегать своппинга.

Page 39: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Дисковая подсистема

Page 40: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Дисковая подсистема

iostat

Page 41: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Сеть

Page 42: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Нагрузка

Page 43: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

Нагрузка

Page 44: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Аналитика

memcached

Page 45: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Действия при аварии

Нужно быстро понять – где и как починить

Смотрим срабатывание тестов nagios – часто

единственный источник информации

Смотрим почту от nagios

Смотрим логи. Держим заготовленные скипты-парсеры

логов на поиск ошибок.

Вот тут наливаем чай

Смотрим графики munin, базу pinba

Если получается, запускаем инструменты поиска узких

мест

Page 46: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Инструменты поиска узких мест

Apache /server-status

Включенные логи медленных запросов php-fpm, nginx, apache, mysql

Page 47: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Инструменты поиска узких мест

XHProf, pinba, XDebug

Page 48: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Инструменты поиска узких мест

XHProf (github.com/facebook/xhprof)

Почти не создает нагрузку на бою

Можно быстро найти корень проблемы

Полезно автоматически сохранять

трейсы долгих страниц

… и анализировать их с разработчиками

Page 49: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Инструменты поиска узких мест

XDebug (xdebug.org)

Cоздает ощутимую нагрузку на бою

Можно снимать трейсы выполнения веб-страниц

Часто – незаменимый инструмент

Page 50: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Инструменты поиска узких мест

Старые, добрые утилиты unix

strace

gdbgdb –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

Page 51: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

Автоматизация жизнеобеспечения

Пишем хандлеры для nagios/zabbix

Можно поиграться с Pacemaker

Чем проще – тем лучше!

С удовольствием пообщаюсь на эту

тему в кулуарах

Page 52: Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр

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

Александр Сербул

[email protected]

@AlexSerbul