Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

121 views

Published on

Ruby Meditation #14
8th of April
Kyiv, Projector

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Real-time error alerting & debugging tools Ruby Meditation #14 • April 8, 2017 Alexander Petrov
  2. 2. Ошибки — неотъемлемая часть проектирования Как известно, не ошибается тот, кто ничего не делает. Каждый разработчик допускает ошибки в процессе своей работы. С уровнем роста навыков, вы будете допускать все меньше и меньше ошибок, но неважно насколько вы опытны, от них никто не застрахован. Некоторые ошибки небольшие, а некоторые имеют критически важное значение для проекта готовящегося или уже выпущенному в продакшен. Для таких случаев системы обнаружения и оповещения ошибок в реальном времени станут поистине незаменимы и спасут много времени, потраченного на отладку, мониторинг логов и поиск причины ошибки.
  3. 3. «Если какая-нибудь неприятность может произойти, она случится» (Артур Блох, "Законы Мерфи", 1977) Мы живем в реальном мире со множеством случайных факторов, окружающих нас. Давайте попытаемся предугадать, какие источники ошибок могут быть: ● Поведение вашего приложения под нагрузкой (проблемы с потоками, таймаут времени ожидания запроса базы данных, ...) ● Например поведение вашей production БД, возможно она сортирует записи по-другому или выполняет запросы в другом порядке ● Внешнее API которое вы используете не работает или немного изменилось, или возвращает непредвиденные вами виды ошибок ● Сервис memcached / Redis / MongoDB / <дополните свое название сервиса> внезапно упал ● Ваш почтовый/веб сервер не может обработать всплеск нагрузки или что-то не так с соединением ● Закончилось свободное дисковое пространство или оперативная память ● ...
  4. 4. Автоматические тесты и сервис отслеживания ошибок должны работать совместно Автоматические тесты это хорошо, но недостаточно — вам также нужен сервис отслеживания ошибок. Автоматические тесты защищают вас от множества ошибок и им нет замены. Автоматические тесты и отслеживание ошибок не соревнуются между собой, они работают вместе. Всегда будут вещи, о которых вы не думали заранее. И ваш набор тестов будет расти со временем, чем больше ошибок будет отслежено. Дополнительно, шансы очень высоки, что даже если вы будете стараться, ваше development или staging окружение не на 100% идентичное с вашим production окружением. В случае с Ruby on Rails вы наверняка замечали эти различия в настройках в папке config/environments/.
  5. 5. Ответственные разработчики должны быть сразу уведомлены о возникшей ошибке Приложение может иметь потрясающие юнит и функциональные тесты, но потом на продакшене что-то идет не так и неправильная обработка ошибок делает ситуацию только хуже. Достаточно плохо, когда на продакшене что-то идет не так, но еще хуже если: ● Вы не имеете четкого сообщения в логе, которое идентифицирует что конкретно пошло не так. ● Вы не были автоматически уведомлены по e-mail что что-то пошло не так. Вместо этого, клиент жалуется представителю службы поддержки клиентов что есть проблема.
  6. 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. 7. Установка и настройка в Rails-проекте 1. Создадим новый проект на Rollbar
  8. 8. Установка и настройка в Rails-проекте 2. Получим токен проекта POST_SERVER_ITEM_ACCESS_TOKEN
  9. 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!
  10. 10. Rollbar: Dashboard
  11. 11. Rollbar: Items
  12. 12. Rollbar: Items / Item
  13. 13. Rollbar: Items / Item
  14. 14. Rollbar: Notifications / E-mail
  15. 15. Rollbar: Notifications / Trello
  16. 16. Rollbar: Notifications / Trello
  17. 17. Rollbar: Items / Item /Trello functions
  18. 18. Rollbar: Source Control / Bitbucket
  19. 19. Rollbar: Deploys
  20. 20. Deploys: Bash-скрипт для уведомлений tmp/notify_rollbar_after_deploy_production.sh
  21. 21. Rollbar: People
  22. 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. 23. Аналоги ● New Relic ● Airbrake ● HoneyBadger ● Scout ● AppSignal ● Sentry ● Exceptiontrap ● Raygun ● ...

×