Skip to content

Latest commit

 

History

History
101 lines (79 loc) · 1.94 KB

File metadata and controls

101 lines (79 loc) · 1.94 KB

Task 030: Observability Setup

Objective

Add error tracking and structured logging for production monitoring.

Prerequisites

  • None

Current State

  • No error tracking service configured
  • Default Rails logging

Steps

Step 1: Add Error Tracking (Sentry)

# Gemfile
gem "sentry-ruby"
gem "sentry-rails"
# config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = ENV["SENTRY_DSN"]
  config.breadcrumbs_logger = [:active_support_logger, :http_logger]
  config.traces_sample_rate = 0.1
  config.environment = Rails.env
  config.enabled_environments = %w[production staging]
end

Step 2: Add Structured Logging (Lograge)

# Gemfile
gem "lograge"
# config/initializers/lograge.rb
Rails.application.configure do
  config.lograge.enabled = true
  config.lograge.formatter = Lograge::Formatters::Json.new
  config.lograge.custom_options = lambda do |event|
    {
      time: Time.current.iso8601,
      host: event.payload[:host],
      user_id: event.payload[:user_id],
      tenant_id: event.payload[:tenant_id],
      request_id: event.payload[:request_id]
    }
  end
end

Step 3: Add Custom Payload to Controllers

# app/controllers/application_controller.rb
def append_info_to_payload(payload)
  super
  payload[:host] = request.host
  payload[:user_id] = current_user&.id
  payload[:tenant_id] = current_tenant&.id
  payload[:request_id] = request.request_id
end

Step 4: Configure Log Shipping (Optional)

For cloud deployment, configure log forwarding to:

  • AWS CloudWatch
  • Datadog
  • Papertrail

Alternative: AppSignal

# Gemfile
gem "appsignal"
bundle exec appsignal install

Success Criteria

  • Error tracking gem installed and configured
  • Errors automatically reported to dashboard
  • Lograge produces structured JSON logs
  • Custom payload includes user/tenant context
  • Logs are parsable by monitoring tools