Log+
Upcoming SlideShare
Loading in...5
×
 

Log+

on

  • 2,000 views

 

Statistics

Views

Total Views
2,000
Views on SlideShare
1,401
Embed Views
599

Actions

Likes
0
Downloads
52
Comments
1

10 Embeds 599

http://www.highload.ru 360
http://highload.ru 155
http://archive.highload.ru 40
http://2012.highload.co 35
http://webcache.googleusercontent.com 2
http://www.slideshare.net 2
http://2012en.highload.ru 2
http://dev.highload.ru 1
http://2013.highload.co 1
http://2012.highload.ru 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Библиотека, о которой идёт речь в докладе переехала по адресу https://github.com/barbushin/lagger
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Log+ Log+ Presentation Transcript

  • Логгирование и мониторинг нагрузки Константин Андрюнин, Сергей Барбушин
  • Для кого этот доклад ?
      • для тех, кто использует LAMP
            •   мы расскажем о логгировании на PHP
      • для средних и больших проектов
            •   от трёх серверов и больше
      • для тех, кто пишет большие программы
            •   более 600 строчек кода
      • для тех, кому важна нагрузка
            •   более 10 обращений в секунду к БД, кэшам и WS
  • Что вы услышите ?
      • логгирование в LAMP/PHP
            •   зачем нужно в PHP логгирование?
            • зачем понадобилось писать свой логгер?
            • обзор движков логгирования для PHP
      • использование логгера в живых проектах
            •   внедрение в живой код
            • паттерны использования
            • примеры
      • когда серверов много
            •   сбор логов и как я это делаю
      • мониторинг по логам
            •   что должно попадать в лог и в каком формате
            • как расставлять логгеры
      • анализ логов
            •   асинхронные события
            • как померять нагрузки
            • инструменты
  • PHP : История вопроса
      • … но потом он повзрослел :
      • - как язык
          • добавились обработки исключений, OOP …
      • - появились сложные проекты
          • facebook , vkontakte …
      • - появились высокие нагрузки
          • десятки тысяч запросов в секунду…
  • PHP : Как оно сейчас?
      • когда же случается факап…
      • - то программист просто будет пытаться воспроизвести ошибку
          • у него нет другого способа узнать, отчего она возникла
      • … но программисты остались в прошлом :
      • - не используют новые инструменты PHP
        • - продолжают дебажить пальцем по коду
          • вставляя die(“ya, that line!");
          • - забивают на обработку ошибок
            • максимум включая опцию в php.ini показывать / не показывать еноты
  • PHP : Что есть?
  • А зачем оно нужно ?
      • потому что сейчас лог малоинформативен
            • - хочется: сопутствующие переменные, backtrace…
      • нет динамического перенаправления вывода лога
            • - хочется: записать часть лога в один файл, часть – в другой
      • нет своих обработчиков ошибок
            • - хочется: записать в DB, отправить по SMS, email…
      • не хватает дополнительных фильтров ошибок
            • - хочется: видеть ошибки только юзера в сессии и только с определённой страницы…
  • Lagger !
      • http://lagger-logger.org
      • http://lagger-logger.org
  • Аспекты использования LL :
      • обработка системных ошибок
      • дебаг
      • мониторинг корректной работы системы
      • мониторинг нагрузки на систему
  • Обработка системных ошибок в LL
      • зачем?
            • безопасность
            • своевременное уведомление
      • пример :
            • переопределение стандартного обработчика
            • конфигурация LL
            • исключительные ситуации ( fatal error )
  • Дебаг с LL
      • Сами инициируем события!
      • зачем?
            • оптимизация разработки
            • логгирование задержек в DB, WS
            • мониторинг работы AJAX
      • что логгируем?
            • DB, WS, нахождение ключей в кэше
      • профили обработки
            • high, low, db….
  • Мониторинг нагрузки с LL
  • Что должно попадать в лог и в каком формате?
      • 2008.10.05 03:42:36.998 INFO e182aaf7 IncomeHandler user income
      • 2008.10.05 03:42:36.998 DEBUG e182aaf7 IncomeHandler rote to component: [show]
      • 2008.10.05 03:42:36.998 INFO e182aaf7 page.show.dao get page model
      • 2008.10.05 03:42:36.998 DEBUG e182aaf7 page.show.dao ws [newTransaction] start
      • 2008.10.05 03:42:37.334 DEBUG e182aaf7 page.show.dao ws [newTransaction] end
      • 2008.10.05 03:42:37.338 INFO e182aaf7 page.show.dao model complete
      • 2008.10.05 03:42:37.338 INFO e182aaf7 page.show.renderer start rendering
      • 2008.10.05 03:42:37.344 INFO e182aaf7 page.show.renderer rendering end
      • 2008.10.05 03:42:37.344 DEBUG e182aaf7 IncomeHandler component out: [show]
      • 2008.10.05 03:42:37.344 INFO e182aaf7 IncomeHandler send content
      • DATE > LogTYPE > UserID > ComponentID > comment/varibles
  • Пример обработки лога:
      • 2008.10.05 04:40:35 0 2 1 0 282 251 0 308 261
      • 2008.10.05 04:40:40 1 5 1 527 1077 238 539 1142 246
      • 2008.10.05 04:40:45 3 2 3 2023 185 765 2053 195 794
      • 2008.10.05 04:40:50 1 3 4 377 758 1244 389 809 1288
      • 2008.10.05 04:40:55 0 2 6 0 476 1636 0 493 1693
      • 2008.10.05 04:41:00 1 1 2 537 115 475 544 127 497
      • 2008.10.05 04:41:05 1 4 1 394 937 289 398 982 300
      • DATE
      • запросы по типу (за период)
      • Обращение к WS ( сумма по всем откликам за период )
      • Время генерации страницы (сумма по всем откликам за период)
  •  
  •  
  • Что должно попадать в лог?
      • Имя ноды (если их несколько)
      • Название БД (в том числе разных схем)
      • Тип запроса (на запись / на чтение)
      • Дополнительные переменные, для идентификации события
      • Форк новой нити
      • Конец отработки нити
      • Начало запроса к любому внешнему сервису / компоненту
      • Окончание запроса
      • Что писать в лог?
  • Какие ещё логи нужно собирать?
      • Расход памяти
      • Утилизация CPU по процессам
      • Количество процессов в системе
      • к примеру, периодический (раз в минуту) вызов
      • ps -e -o pcpu,cpu,nice,state,cputime,args | grep php
      • и последующая отправка результата в лог-коллектор
      • Как это сделать?
  • Как собирать логи?
      • Использовать сервер очередей!
          • ActiveMQ
          • SPREAD
          • или любой другой высокопроизводительный сервер с REST API
  • Как собирать логи?
  • Как собирать логи?
  • Вопросы? наш проект вы можете найти на сайте http://lagger-logger.org [email_address] [email_address]