Blog #4

System error tracking with Sentry

# Giới thiệu

Sentry là một third-party phát hiện lỗi từ những vấn đề nhỏ đến những vấn đề cực kì quan trọng.

Khả năng hiển thị trên tất cả các nền tảng, vì vậy không có lỗi nào thoát khỏi bạn.

Nó sẽ gửi email mỗi khi phát hiện ra lỗi hệ thống để bạn có thể sửa lỗi và cải thiện hệ thống nhanh nhất có thể mà không cần phải đợi user report lỗi lên hệ thống :>

Ngoài ra Sentry còn giúp bạn về những vấn đề về hiệu suất khác. Đọc thêm ở đây nha :))

À còn một điều vô cùng quan trọng, là nó miễn phí nha :D

# Config Sentry with Rails app

Cài đặt Sentry vào ứng dụng Rails cũng cực kì dễ dàng

Thêm vào Gemfile

gem "sentry-ruby"
gem "sentry-rails"

Chạy lệnh

$ bundle install

Thêm file sentry.rb tại đường dẫn config/initializers/sentry.rb

# config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = 'https://examplePublicKey@o0.ingest.sentry.io/0'
  config.breadcrumbs_logger = [:active_support_logger, :http_logger]
  # To activate performance monitoring, set one of these options.
  # We recommend adjusting the value in production:
  config.traces_sample_rate = 1.0
  # or
  config.traces_sampler = lambda do |context|
    true
  end
end

Chú ý: Thông số config.dsn bạn lấy khi signup nha, nên bỏ thông số này vào .env file

Chọn branch muốn nhận thông báo (Ở đây mình nhận thông báo ở staging env và production env)

config.enabled_environments = ['staging', 'production']

Sửa lại file sentry.rb như sau

# config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = ENV['SENTRY_DSN']
  config.breadcrumbs_logger = [:active_support_logger, :http_logger]
  config.enabled_environments = ['staging', 'production']
  # To activate performance monitoring, set one of these options.
  # We recommend adjusting the value in production:
  config.traces_sample_rate = 1.0
  # or
  config.traces_sampler = lambda do |_context|
    true
  end
end

# Verify

Bạn cần vào đúng môi trường cấu hình Sentry ở phía trên để thử

Ở đây mình chọn production environment

Các bạn ssh đến server và chạy rails console 

$ RAILS_ENV=production rails c

Nhập lệnh test như sau

Sentry.capture_message("test message")

Như vậy là đã thành công! Check Sentry báo gì nhé!  

Vậy là bạn đã tạo được 1 fake error và nhận thông báo thành công rồi! Từ giờ system của bạn có lỗi gì nó đều đá lên đây ngay lập tức :)) Khỏe rồi ha