diff --git a/config/config.exs b/config/config.exs index 4b87d3a1..cc4dbd84 100644 --- a/config/config.exs +++ b/config/config.exs @@ -21,7 +21,8 @@ config :honeybadger, api_key: "hbp_xe5xMnpLZ2XJsXQJujoEkgCmiqCfwa0uYA3Y", environment_name: config_env(), insights_enabled: true, - use_logger: true + use_logger: true, + filter: Towerops.HoneybadgerFilter # Configure Elixir's Logger config :logger, :default_formatter, diff --git a/lib/towerops/honeybadger_filter.ex b/lib/towerops/honeybadger_filter.ex new file mode 100644 index 00000000..a17503db --- /dev/null +++ b/lib/towerops/honeybadger_filter.ex @@ -0,0 +1,30 @@ +defmodule Towerops.HoneybadgerFilter do + @moduledoc """ + Custom Honeybadger filter to exclude noisy errors during deployments. + + Filters out os_mon supervisor errors (memsup, cpu_sup) that occur + during normal node shutdown/restart. + """ + + use Honeybadger.Filter.Mixin + + # Supervisors/processes that generate errors during normal shutdown + @ignored_registered_names [ + "memsup", + "cpu_sup", + "Elixir.PollerSupervisor" + ] + + @impl Honeybadger.Filter + def filter_context(context) do + # Check if this is an os_mon supervisor error + registered_name = get_in(context, [:registered_name]) + + if registered_name in @ignored_registered_names do + # Return nil to filter out this error + nil + else + super(context) + end + end +end