SlideShare a Scribd company logo
Держим руку на
пульсе проекта
МОНИТОРИНГ PHP-ПРИЛОЖЕНИЙ
MINSK PHP USER GROUP MEETUP #7
Дисклеймер
1. Мало текста
2. Еще меньше картинок.
o Авторов не нашел
o Копирайтов не проставил
o Стыдно
3. Шутки. Много, тупых и не к месту
4. 43 слайда
2
Содержание
1. Пашму? Зашем, нашальника?
2. Меряем
3. Сообщаем
4. Агрегируем логи
3
1. Пашму?
ЗАШЕМ, НАШАЛЬНИКА?
4
Вопрос. Важный. Честно.
Кто-нибудь уже меряет,
нотифицирует?
5
Еще один важный вопрос
А нотифицирует?
А агрегирует?
А спим спокойно?
6
Зачем это вообще нужно?
Чтобы спать спокойно
Чтобы не говорить «с нашей
стороны ракеты вылетели»
Чтобы никому не ломать пальцы
И самому не попадать в
травматологию
7
А серьезно?
Узнавать о проблемах раньше,
чем клиенты
Статистика
Автоматизация
(масштабируемость, высокая
доступность)
8
Меряем
ЭТО НЕ ТО, ЧТО ВЫ ПОДУМАЛИ. ЭТО ПРО
МЕТРИКИ
9
Что мерять. Big picture
1. Сервер (клауд? сюрприз!)
2. Сервисы (компоненты)
3. Приложение (бэкэнд)
4. Приложение (фронтэнд)
 кто это делает? 
10
Меряем сервер
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)
11
Меряем сервисы. Выбор
редакции в номинации “LAMP”
1. “L”: пропустим
2. “A”: nginx
(http_stub_status_module)
3. “M”: Visual FoxPro MySQL
4. “P”: php-fpm. без шуток.
12
Приложение. Ну наконец-то!
1. Время обработки
запроса/консоли
2. Потребляемая память
3. Страничка isAlive
4. Кастомные
метрики/бенчмарки
13
Весь доклад – сплошная
вода!
14
Тулзы. Чем?
Pinba xhprof
New Relic
15
Тулзы. Чем еще?
1. Зависит от того, «куда»
2. zabbix_sender
3. другие проприетарные тулзы и
API
16
Тулзы. Куда?
Zabbix Pinboard
New Relic
17
Zabbix
18
Pinboard
19
Тулзы. Куда еще?
1. Munin
2. Cacti
3. AWS CloudWatch
4. Nagios/Icinga
5. Heartbeat page
(https://status.github.com/)
20
Сообщаем
21
Мерять и хранить - хорошо
Но лучше – еще и читать
Даже когда девелоперы спять
Особенно когда девелоперы спят
22
Что делать?
1. Сказать человекам
◦ «Шэф, усё прапала!»
◦ «Понять и простить»
2. Сказать роботам
◦ Ни капли сожаления
◦ И зубы целы
23
Куда сообщать, человеки?
1. Скорая помощь, девопсы
2. jobs.tut.by – «ищу работу»
3. Emails
4. SMS
5. Mobile apps notifications
24
Какой сокет слушают
роботы?
1. AWS AutoScale
2. HAProxy
3. Выключаем ноду из кластера
4. Перебалансируем нагрузку
5. Graceful degradation
25
Агрегируем логи
Источники
1. Сервер
2. Сервисы
3. Приложение
27
Сервер = Syslog
This page intentionally left blank
28
Все остальное?
1. Syslog
29
Все остальное?
1. Syslog
2. Log files
◦ logrotate!
3. Database
◦ MySQL: Archive
◦ MongoDB: Capped Collections
4. Спецпротоколы (GELF)
30
Все остальное?
Не делаем рекурсий: не храним
логи базы данных в базе данных
31
Сервисы
1. Web server (error/access)
2. MySQL (error/slow query)
3. PHP (error/SAPI/stderr)
32
Приложение
Monolog
1. syslog/GELF/<ваше_апи>
2. Formatter (многострочные
exceptions)
3. Processor (доп. данные)
33
В ложке syslog-меда…
1. Многие не умеют «всислог»
2. Некоторые хотят денег
3. А еще кое-кто делает это плохо
34
PHP + Syslog = БОЛЬ!!1
35
https://github.com/php/php-src/blob/master/main/main.c#L665
https://wiki.php.net/rfc/allow_multiple_simultaneous_syslog_connections
Традиционные вопросы
1. Чем?
2. Куда?
36
Чем?
1. Rsyslog
2. syslog-ng
◦ Multiline (MySQL slow query log)
◦ Костыли для PHP (tip: роутим
на destination, в котором
переставляем priority если
program PHP)
37
Куда?
1. Graylog2
2. Logstash + ElasticSearch +
Kebana
38
Graylog2
1. Syslog (TCP(!)/UDP; old proto )
2. GELF
3. ElasticSearch (backup!)
4. MongoDB (backup!)
5. Extractors
39
Разбавим текст картинкой
40
Ну и скриншот…
41
Ссылки
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/
42
Как-бы все…
Спасибо за терпение!
Вопросы?
Skype: max.romanovsky
E-mail: max.romanovsky@gmail.com
maksim_ramanouski@epam.com
http://maxromanovsky.com/
43

More Related Content

PPTX
Automated testing dojo - how to play game
PDF
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
PDF
monit — простой мониторинг
PDF
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
PDF
Никита Галкин "Ловушки микросервисной архитектуры"
PPTX
Performance tips for Symfony2 & PHP
PPTX
Symfony 2 under control
PDF
Living documentation mini-workshop
Automated testing dojo - how to play game
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
monit — простой мониторинг
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Никита Галкин "Ловушки микросервисной архитектуры"
Performance tips for Symfony2 & PHP
Symfony 2 under control
Living documentation mini-workshop

Similar to Держим руку на пульсе проекта. Мониторинг PHP-приложений (20)

PPTX
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
PDF
Работа с ошибками. Как ловить исключения и что потом с ними делать (Григорий ...
PDF
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
PDF
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
PPT
Так говорят программисты
PDF
Wild microservices and imaginary DevOps
PDF
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
PPTX
MagicPlot @ UXSPb @ IT Global Meetup #7
PPT
Микросервисы: первая кровь
PDF
Белоус Екатерина
PPTX
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
PDF
микроСЕРВИСЫ: огонь, вода и медные трубы
PPT
История проекта, который никогда не падает / Андрей Шетухин
PDF
Собеседование на позицию Java Developer
PPTX
Exactpro Training: Defects and Feelings
PPTX
Джентльменский набор сисадмина / Антон Турецкий (Badoo)
PPTX
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
PDF
Преемственность продуктов
PPTX
How to Put Automation Engineers Down
PDF
Haker0515-myjurnal.ru
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Работа с ошибками. Как ловить исключения и что потом с ними делать (Григорий ...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Так говорят программисты
Wild microservices and imaginary DevOps
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
MagicPlot @ UXSPb @ IT Global Meetup #7
Микросервисы: первая кровь
Белоус Екатерина
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
микроСЕРВИСЫ: огонь, вода и медные трубы
История проекта, который никогда не падает / Андрей Шетухин
Собеседование на позицию Java Developer
Exactpro Training: Defects and Feelings
Джентльменский набор сисадмина / Антон Турецкий (Badoo)
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Преемственность продуктов
How to Put Automation Engineers Down
Haker0515-myjurnal.ru
Ad

Держим руку на пульсе проекта. Мониторинг PHP-приложений