43
Держим руку на пульсе проекта МОНИТОРИНГ PHP-ПРИЛОЖЕНИЙ MINSK PHP USER GROUP MEETUP #7

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

Embed Size (px)

DESCRIPTION

Minsk PHP user group meetup #7

Citation preview

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

Держим руку на пульсе проектаМОНИТОРИНГ PHP-ПРИЛОЖЕНИЙ

MINSK PHP USER GROUP MEETUP #7

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

2

Дисклеймер1. Мало текста2. Еще меньше картинок.o Авторов не нашелo Копирайтов не проставилo Стыдно

3. Шутки. Много, тупых и не к месту4. 43 слайда

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

3

Содержание1. Пашму? Зашем, нашальника?2. Меряем3. Сообщаем4. Агрегируем логи

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

4

1. Пашму? ЗАШЕМ, НАШАЛЬНИКА?

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

5

Вопрос. Важный. Честно. Кто-нибудь уже меряет, нотифицирует?

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

6

Еще один важный вопрос А нотифицирует? А агрегирует? А спим спокойно?

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

7

Зачем это вообще нужно? Чтобы спать спокойно Чтобы не говорить «с нашей стороны ракеты вылетели» Чтобы никому не ломать пальцы И самому не попадать в травматологию

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

8

А серьезно? Узнавать о проблемах раньше, чем клиенты Статистика Автоматизация (масштабируемость, высокая доступность)

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

9

МеряемЭТО НЕ ТО, ЧТО ВЫ ПОДУМАЛИ. ЭТО ПРО МЕТРИКИ

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

10

Что мерять. Big picture1. Сервер (клауд? сюрприз!)2. Сервисы (компоненты)3. Приложение (бэкэнд)4. Приложение (фронтэнд) кто это делает?

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

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)

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

12

Меряем сервисы. Выбор редакции в номинации “LAMP”

1. “L”: пропустим2. “A”: nginx

(http_stub_status_module)3. “M”: Visual FoxPro MySQL4. “P”: php-fpm. без шуток.

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

13

Приложение. Ну наконец-то!1. Время обработки

запроса/консоли2. Потребляемая память3. Страничка isAlive4. Кастомные

метрики/бенчмарки

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

14

Весь доклад – сплошная вода!

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

15

Тулзы. Чем?

Pinba xhprof

New Relic

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

16

Тулзы. Чем еще?1. Зависит от того, «куда»2. zabbix_sender3. другие проприетарные тулзы и

API

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

17

Тулзы. Куда?

Zabbix Pinboard

New Relic

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

18

Zabbix

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

19

Pinboard

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

20

Тулзы. Куда еще?1. Munin2. Cacti3. AWS CloudWatch4. Nagios/Icinga5. Heartbeat page (

https://status.github.com/)

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

21

Сообщаем

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

22

Мерять и хранить - хорошоНо лучше – еще и читатьДаже когда девелоперы спятьОсобенно когда девелоперы спят

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

23

Что делать?1. Сказать человекам

◦ «Шэф, усё прапала!»◦ «Понять и простить»

2. Сказать роботам◦ Ни капли сожаления◦ И зубы целы

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

24

Куда сообщать, человеки?1. Скорая помощь, девопсы2. jobs.tut.by – «ищу работу»3. Emails4. SMS5. Mobile apps notifications

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

25

Какой сокет слушают роботы?1. AWS AutoScale2. HAProxy3. Выключаем ноду из кластера4. Перебалансируем нагрузку5. Graceful degradation

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

Агрегируем логи

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

27

Источники1. Сервер2. Сервисы3. Приложение

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

28

Сервер = Syslog This page intentionally left blank

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

29

Все остальное?1. Syslog

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

30

Все остальное?1. Syslog2. Log files

◦ logrotate!

3. Database ◦ MySQL: Archive◦ MongoDB: Capped Collections

4. Спецпротоколы (GELF)

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

31

Все остальное?Не делаем рекурсий: не храним логи базы данных в базе данных

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

32

Сервисы1. Web server (error/access)2. MySQL (error/slow query)3. PHP (error/SAPI/stderr)

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

33

Приложение Monolog1. syslog/GELF/<ваше_апи>2. Formatter (многострочные

exceptions)3. Processor (доп. данные)

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

34

В ложке syslog-меда…1. Многие не умеют «всислог»2. Некоторые хотят денег3. А еще кое-кто делает это плохо

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

36

Традиционные вопросы1. Чем?2. Куда?

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

37

Чем?1. Rsyslog2. syslog-ng

◦ Multiline (MySQL slow query log)◦ Костыли для PHP (tip: роутим на

destination, в котором переставляем priority если program PHP)

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

38

Куда?1. Graylog22. Logstash + ElasticSearch +

Kebana

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

39

Graylog21. Syslog (TCP(!)/UDP; old proto )2. GELF3. ElasticSearch (backup!)4. MongoDB (backup!)5. Extractors

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

40

Разбавим текст картинкой

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

41

Ну и скриншот…

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

43

Как-бы все… Спасибо за терпение! Вопросы?

Skype: max.romanovsky

E-mail: [email protected]

[email protected]

http://maxromanovsky.com/