SlideShare a Scribd company logo
Real-time error alerting &
debugging tools
Ruby Meditation #14 • April 8, 2017
Alexander Petrov
Ошибки — неотъемлемая часть проектирования
Как известно, не ошибается тот, кто ничего не делает.
Каждый разработчик допускает ошибки в процессе своей работы.
С уровнем роста навыков, вы будете допускать все меньше и меньше ошибок,
но неважно насколько вы опытны, от них никто не застрахован.
Некоторые ошибки небольшие, а некоторые имеют критически важное значение
для проекта готовящегося или уже выпущенному в продакшен.
Для таких случаев системы обнаружения и оповещения ошибок в реальном
времени станут поистине незаменимы и спасут много времени, потраченного
на отладку, мониторинг логов и поиск причины ошибки.
«Если какая-нибудь неприятность может произойти, она
случится» (Артур Блох, "Законы Мерфи", 1977)
Мы живем в реальном мире со множеством случайных факторов, окружающих нас.
Давайте попытаемся предугадать, какие источники ошибок могут быть:
● Поведение вашего приложения под нагрузкой (проблемы с потоками, таймаут времени ожидания
запроса базы данных, ...)
● Например поведение вашей production БД, возможно она сортирует записи по-другому или
выполняет запросы в другом порядке
● Внешнее API которое вы используете не работает или немного изменилось, или возвращает
непредвиденные вами виды ошибок
● Сервис memcached / Redis / MongoDB / <дополните свое название сервиса> внезапно упал
● Ваш почтовый/веб сервер не может обработать всплеск нагрузки или что-то не так с
соединением
● Закончилось свободное дисковое пространство или оперативная память
● ...
Автоматические тесты и сервис отслеживания
ошибок должны работать совместно
Автоматические тесты это хорошо, но недостаточно — вам также нужен сервис
отслеживания ошибок.
Автоматические тесты защищают вас от множества ошибок и им нет замены.
Автоматические тесты и отслеживание ошибок не соревнуются между собой, они
работают вместе. Всегда будут вещи, о которых вы не думали заранее. И ваш
набор тестов будет расти со временем, чем больше ошибок будет отслежено.
Дополнительно, шансы очень высоки, что даже если вы будете стараться, ваше
development или staging окружение не на 100% идентичное с вашим production
окружением. В случае с Ruby on Rails вы наверняка замечали эти различия в
настройках в папке config/environments/.
Ответственные разработчики должны быть
сразу уведомлены о возникшей ошибке
Приложение может иметь потрясающие юнит и функциональные тесты, но потом
на продакшене что-то идет не так и неправильная обработка ошибок делает
ситуацию только хуже.
Достаточно плохо, когда на продакшене что-то идет не так, но еще хуже
если:
● Вы не имеете четкого сообщения в логе, которое идентифицирует что
конкретно пошло не так.
● Вы не были автоматически уведомлены по e-mail что что-то пошло не
так. Вместо этого, клиент жалуется представителю службы поддержки
клиентов что есть проблема.
Rollbar: Языки, фреймворки, платформы,
которые можно мониторить
Server-side
● Ruby
● PHP
● Node.js
● Python
● .NET
● Java
● Go
● Laravel
● Meteor
Прочие
● ColdFusion
● Cordova
● Dart
● Flash
● Google App Engine
● hapi
● Ionic
● Meteor
● Vue.js
Самые популярные
● Clojure
● Haskell
● Erlang
● Elixir
● GoogleCloud
● Perl
● R
● Rust
Client-side
● Javascript
● React
● AngularJS
● Android
● iOS
Установка и настройка в Rails-проекте
1. Создадим новый проект на Rollbar
Установка и настройка в Rails-проекте
2. Получим токен проекта POST_SERVER_ITEM_ACCESS_TOKEN
Установка и настройка в Rails-проекте
3. Добавим гем в Gemfile
gem 'rollbar'
4. Установим гем
$ bundle install Если не используете bundler: $ gem install rollbar
5. Подставим токен из шага 2 и сгенерируем файл конфига config/initializers/rollbar.rb и
$ rails generate rollbar d072b1c3d4fc45e1a27c5a2dd460bbff
6. Отключим уведомления в development окружении (их лучше смотреть например в better_errors)
- if Rails.env.test?
+ if Rails.env.test? || Rails.env.development?
config.enabled = false
End
7. Коммит и деплой на staging / production
8. PROFIT!
Rollbar: Dashboard
Rollbar: Items
Rollbar: Items / Item
Rollbar: Items / Item
Rollbar: Notifications / E-mail
Rollbar: Notifications / Trello
Rollbar: Notifications / Trello
Rollbar: Items / Item /Trello functions
Rollbar: Source Control / Bitbucket
Rollbar: Deploys
Deploys: Bash-скрипт для уведомлений
tmp/notify_rollbar_after_deploy_production.sh
Rollbar: People
Rollbar: Дополнения и полезности
● Документация https://rollbar.com/docs/
● Репозиторий со всеми компонентами https://github.com/rollbar
● Блог со множеством полезных статей https://rollbar.com/blog/
● Список изменений https://headwayapp.co/rollbar-changelog
● Статус всех подсистем Rollbar http://status.rollbar.com/
Аналоги
● New Relic
● Airbrake
● HoneyBadger
● Scout
● AppSignal
● Sentry
● Exceptiontrap
● Raygun
● ...

More Related Content

PDF
Keyword driven testing
PDF
Выбираем стратегию создания бранчей
PPT
Let's Talk About Junit 5
PDF
Никита Галкин "Ловушки микросервисной архитектуры"
PPTX
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
PPTX
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
PDF
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
PDF
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Keyword driven testing
Выбираем стратегию создания бранчей
Let's Talk About Junit 5
Никита Галкин "Ловушки микросервисной архитектуры"
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17

What's hot (20)

PPTX
Автоматизация тестирования - это пот, кровь и слезы
PPTX
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
PPTX
9 релизов в неделю: секрет успеха.
PDF
В поисках магической кнопки или как приручить SOAP UI
PDF
Xp days 2019 - Why startups need SRE practices
PPTX
FitNesse+PowerSlim on Windows
PPTX
ховатти светлана
PDF
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
PPTX
Как заводить баги понятно всем
PDF
CodeFest 2012. Быстрых С. — Карантинная зона для автотестов: повышение стабил...
PDF
За пределами PageObject
PDF
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
PDF
Стачка 2017: Golang – опыт промышленной разработки
PDF
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
PDF
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
PPTX
Тестирование REST-сервисов с применением инженерных практик
PDF
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
PDF
Скажи мне правду, Scrum, когда тестировать нам?
PDF
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
PPTX
Наталья Медведева - Тестировщик на все руки в Scrum-команде
Автоматизация тестирования - это пот, кровь и слезы
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
9 релизов в неделю: секрет успеха.
В поисках магической кнопки или как приручить SOAP UI
Xp days 2019 - Why startups need SRE practices
FitNesse+PowerSlim on Windows
ховатти светлана
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
Как заводить баги понятно всем
CodeFest 2012. Быстрых С. — Карантинная зона для автотестов: повышение стабил...
За пределами PageObject
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Стачка 2017: Golang – опыт промышленной разработки
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Тестирование REST-сервисов с применением инженерных практик
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Скажи мне правду, Scrum, когда тестировать нам?
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
Наталья Медведева - Тестировщик на все руки в Scrum-команде
Ad

Similar to Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov (7)

PDF
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
PDF
Иван Евтухович — Как перестать релизиться и начать жить
PDF
Комфортная разработка мобильных проектов
PDF
Корпоративное приложение на Rails
PPTX
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
PDF
Отладка и эксплуатация Rails-приложений
PDF
Борьба с багами: RailsClub на DevConf 2015
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Иван Евтухович — Как перестать релизиться и начать жить
Комфортная разработка мобильных проектов
Корпоративное приложение на Rails
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Отладка и эксплуатация Rails-приложений
Борьба с багами: RailsClub на DevConf 2015
Ad

More from Ruby Meditation (20)

PDF
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
PDF
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
PDF
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
PDF
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
PDF
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
PDF
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
PDF
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
PDF
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
PDF
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
PDF
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
PDF
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
PDF
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
PDF
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
PDF
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
PDF
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
PDF
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
PDF
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
PDF
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
PDF
Rails App performance at the limit - Bogdan Gusiev
PDF
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Rails App performance at the limit - Bogdan Gusiev
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23

Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov

  • 1. Real-time error alerting & debugging tools Ruby Meditation #14 • April 8, 2017 Alexander Petrov
  • 2. Ошибки — неотъемлемая часть проектирования Как известно, не ошибается тот, кто ничего не делает. Каждый разработчик допускает ошибки в процессе своей работы. С уровнем роста навыков, вы будете допускать все меньше и меньше ошибок, но неважно насколько вы опытны, от них никто не застрахован. Некоторые ошибки небольшие, а некоторые имеют критически важное значение для проекта готовящегося или уже выпущенному в продакшен. Для таких случаев системы обнаружения и оповещения ошибок в реальном времени станут поистине незаменимы и спасут много времени, потраченного на отладку, мониторинг логов и поиск причины ошибки.
  • 3. «Если какая-нибудь неприятность может произойти, она случится» (Артур Блох, "Законы Мерфи", 1977) Мы живем в реальном мире со множеством случайных факторов, окружающих нас. Давайте попытаемся предугадать, какие источники ошибок могут быть: ● Поведение вашего приложения под нагрузкой (проблемы с потоками, таймаут времени ожидания запроса базы данных, ...) ● Например поведение вашей production БД, возможно она сортирует записи по-другому или выполняет запросы в другом порядке ● Внешнее API которое вы используете не работает или немного изменилось, или возвращает непредвиденные вами виды ошибок ● Сервис memcached / Redis / MongoDB / <дополните свое название сервиса> внезапно упал ● Ваш почтовый/веб сервер не может обработать всплеск нагрузки или что-то не так с соединением ● Закончилось свободное дисковое пространство или оперативная память ● ...
  • 4. Автоматические тесты и сервис отслеживания ошибок должны работать совместно Автоматические тесты это хорошо, но недостаточно — вам также нужен сервис отслеживания ошибок. Автоматические тесты защищают вас от множества ошибок и им нет замены. Автоматические тесты и отслеживание ошибок не соревнуются между собой, они работают вместе. Всегда будут вещи, о которых вы не думали заранее. И ваш набор тестов будет расти со временем, чем больше ошибок будет отслежено. Дополнительно, шансы очень высоки, что даже если вы будете стараться, ваше development или staging окружение не на 100% идентичное с вашим production окружением. В случае с Ruby on Rails вы наверняка замечали эти различия в настройках в папке config/environments/.
  • 5. Ответственные разработчики должны быть сразу уведомлены о возникшей ошибке Приложение может иметь потрясающие юнит и функциональные тесты, но потом на продакшене что-то идет не так и неправильная обработка ошибок делает ситуацию только хуже. Достаточно плохо, когда на продакшене что-то идет не так, но еще хуже если: ● Вы не имеете четкого сообщения в логе, которое идентифицирует что конкретно пошло не так. ● Вы не были автоматически уведомлены по e-mail что что-то пошло не так. Вместо этого, клиент жалуется представителю службы поддержки клиентов что есть проблема.
  • 6. Rollbar: Языки, фреймворки, платформы, которые можно мониторить Server-side ● Ruby ● PHP ● Node.js ● Python ● .NET ● Java ● Go ● Laravel ● Meteor Прочие ● ColdFusion ● Cordova ● Dart ● Flash ● Google App Engine ● hapi ● Ionic ● Meteor ● Vue.js Самые популярные ● Clojure ● Haskell ● Erlang ● Elixir ● GoogleCloud ● Perl ● R ● Rust Client-side ● Javascript ● React ● AngularJS ● Android ● iOS
  • 7. Установка и настройка в Rails-проекте 1. Создадим новый проект на Rollbar
  • 8. Установка и настройка в Rails-проекте 2. Получим токен проекта POST_SERVER_ITEM_ACCESS_TOKEN
  • 9. Установка и настройка в Rails-проекте 3. Добавим гем в Gemfile gem 'rollbar' 4. Установим гем $ bundle install Если не используете bundler: $ gem install rollbar 5. Подставим токен из шага 2 и сгенерируем файл конфига config/initializers/rollbar.rb и $ rails generate rollbar d072b1c3d4fc45e1a27c5a2dd460bbff 6. Отключим уведомления в development окружении (их лучше смотреть например в better_errors) - if Rails.env.test? + if Rails.env.test? || Rails.env.development? config.enabled = false End 7. Коммит и деплой на staging / production 8. PROFIT!
  • 17. Rollbar: Items / Item /Trello functions
  • 18. Rollbar: Source Control / Bitbucket
  • 20. Deploys: Bash-скрипт для уведомлений tmp/notify_rollbar_after_deploy_production.sh
  • 22. Rollbar: Дополнения и полезности ● Документация https://rollbar.com/docs/ ● Репозиторий со всеми компонентами https://github.com/rollbar ● Блог со множеством полезных статей https://rollbar.com/blog/ ● Список изменений https://headwayapp.co/rollbar-changelog ● Статус всех подсистем Rollbar http://status.rollbar.com/
  • 23. Аналоги ● New Relic ● Airbrake ● HoneyBadger ● Scout ● AppSignal ● Sentry ● Exceptiontrap ● Raygun ● ...