require_relative "../../app/lib/honeycomb/noise_cancelling_sampler" if Rails.env.test? Honeycomb.configure do |config| config.client = Libhoney::TestClient.new end else honeycomb_api_key = ApplicationConfig["HONEYCOMB_API_KEY"] release_footprint = ApplicationConfig["RELEASE_FOOTPRINT"] # Honeycomb automatic Rails integration notification_events = %w[ cache_read.active_support cache_read_multi.active_support sql.active_record render_template.action_view render_partial.action_view render_collection.action_view process_action.action_controller send_file.action_controller send_data.action_controller deliver.action_mailer ].freeze Honeycomb.configure do |config| config.write_key = honeycomb_api_key.presence # libhoney client will automatically fall back to using a null transmission # when no write key is provided, but it will log a warning (visible in a few places) # explicitly override the client to disable the warning config.client = Libhoney::NullClient.new unless config.write_key if ENV["HONEYCOMB_DISABLE_AUTOCONFIGURE"] config.dataset = "background-work" else config.dataset = "rails" config.notification_events = notification_events # Scrub unused data to save space in Honeycomb config.presend_hook do |fields| fields["global.build_id"] = release_footprint if fields.key?("redis.command") fields["redis.command"] = fields["redis.command"].slice(0, 300) elsif fields.key?("sql.active_record.binds") fields.delete("sql.active_record.binds") fields.delete("sql.active_record.datadog_span") end end # Sample away highly redundant events config.sample_hook do |fields| Honeycomb::NoiseCancellingSampler.sample(fields) end end end end