Upload
max-romanovsky
View
587
Download
2
Embed Size (px)
DESCRIPTION
Minsk PHP user group meetup #7
Citation preview
Держим руку на пульсе проектаМОНИТОРИНГ PHP-ПРИЛОЖЕНИЙ
MINSK PHP USER GROUP MEETUP #7
2
Дисклеймер1. Мало текста2. Еще меньше картинок.o Авторов не нашелo Копирайтов не проставилo Стыдно
3. Шутки. Много, тупых и не к месту4. 43 слайда
3
Содержание1. Пашму? Зашем, нашальника?2. Меряем3. Сообщаем4. Агрегируем логи
4
1. Пашму? ЗАШЕМ, НАШАЛЬНИКА?
5
Вопрос. Важный. Честно. Кто-нибудь уже меряет, нотифицирует?
6
Еще один важный вопрос А нотифицирует? А агрегирует? А спим спокойно?
7
Зачем это вообще нужно? Чтобы спать спокойно Чтобы не говорить «с нашей стороны ракеты вылетели» Чтобы никому не ломать пальцы И самому не попадать в травматологию
8
А серьезно? Узнавать о проблемах раньше, чем клиенты Статистика Автоматизация (масштабируемость, высокая доступность)
9
МеряемЭТО НЕ ТО, ЧТО ВЫ ПОДУМАЛИ. ЭТО ПРО МЕТРИКИ
10
Что мерять. Big picture1. Сервер (клауд? сюрприз!)2. Сервисы (компоненты)3. Приложение (бэкэнд)4. Приложение (фронтэнд) кто это делает?
11
Меряем сервер1. CPU (LA, user/system/idle…)2. Memory (free/used, swap)3. IO (tps, await)4. Disk (read/write speed, free/used
space, # of inodes)5. Network (outgoing/ingoing traffic)
12
Меряем сервисы. Выбор редакции в номинации “LAMP”
1. “L”: пропустим2. “A”: nginx
(http_stub_status_module)3. “M”: Visual FoxPro MySQL4. “P”: php-fpm. без шуток.
13
Приложение. Ну наконец-то!1. Время обработки
запроса/консоли2. Потребляемая память3. Страничка isAlive4. Кастомные
метрики/бенчмарки
14
Весь доклад – сплошная вода!
15
Тулзы. Чем?
Pinba xhprof
New Relic
16
Тулзы. Чем еще?1. Зависит от того, «куда»2. zabbix_sender3. другие проприетарные тулзы и
API
17
Тулзы. Куда?
Zabbix Pinboard
New Relic
18
Zabbix
19
Pinboard
20
Тулзы. Куда еще?1. Munin2. Cacti3. AWS CloudWatch4. Nagios/Icinga5. Heartbeat page (
https://status.github.com/)
21
Сообщаем
22
Мерять и хранить - хорошоНо лучше – еще и читатьДаже когда девелоперы спятьОсобенно когда девелоперы спят
23
Что делать?1. Сказать человекам
◦ «Шэф, усё прапала!»◦ «Понять и простить»
2. Сказать роботам◦ Ни капли сожаления◦ И зубы целы
24
Куда сообщать, человеки?1. Скорая помощь, девопсы2. jobs.tut.by – «ищу работу»3. Emails4. SMS5. Mobile apps notifications
25
Какой сокет слушают роботы?1. AWS AutoScale2. HAProxy3. Выключаем ноду из кластера4. Перебалансируем нагрузку5. Graceful degradation
Агрегируем логи
27
Источники1. Сервер2. Сервисы3. Приложение
28
Сервер = Syslog This page intentionally left blank
29
Все остальное?1. Syslog
30
Все остальное?1. Syslog2. Log files
◦ logrotate!
3. Database ◦ MySQL: Archive◦ MongoDB: Capped Collections
4. Спецпротоколы (GELF)
31
Все остальное?Не делаем рекурсий: не храним логи базы данных в базе данных
32
Сервисы1. Web server (error/access)2. MySQL (error/slow query)3. PHP (error/SAPI/stderr)
33
Приложение Monolog1. syslog/GELF/<ваше_апи>2. Formatter (многострочные
exceptions)3. Processor (доп. данные)
34
В ложке syslog-меда…1. Многие не умеют «всислог»2. Некоторые хотят денег3. А еще кое-кто делает это плохо
35
PHP + Syslog = БОЛЬ!!1
https://github.com/php/php-src/blob/master/main/main.c#L665
https://wiki.php.net/rfc/allow_multiple_simultaneous_syslog_connections
36
Традиционные вопросы1. Чем?2. Куда?
37
Чем?1. Rsyslog2. syslog-ng
◦ Multiline (MySQL slow query log)◦ Костыли для PHP (tip: роутим на
destination, в котором переставляем priority если program PHP)
38
Куда?1. Graylog22. Logstash + ElasticSearch +
Kebana
39
Graylog21. Syslog (TCP(!)/UDP; old proto )2. GELF3. ElasticSearch (backup!)4. MongoDB (backup!)5. Extractors
40
Разбавим текст картинкой
41
Ну и скриншот…
42
Ссылки http://pinba.org/ http://intaro.github.io/pinboard/ http://www.zabbix.com/ https://packagist.org/packages/monolog/monolog http://www.balabit.com/network-security/syslog-ng http://graylog2.org/
43
Как-бы все… Спасибо за терпение! Вопросы?
Skype: max.romanovsky
E-mail: [email protected]
http://maxromanovsky.com/