sentry_filter.ex 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. defmodule Plausible.SentryFilter do
  2. @moduledoc """
  3. Sentry callbacks for filtering and grouping events
  4. """
  5. @spec before_send(Sentry.Event.t()) :: Sentry.Event.t()
  6. def before_send(event)
  7. def before_send(%{original_exception: %Phoenix.NotAcceptableError{}}), do: false
  8. def before_send(%{original_exception: %Plug.CSRFProtection.InvalidCSRFTokenError{}}), do: false
  9. def before_send(%{original_exception: %Plug.Static.InvalidPathError{}}), do: false
  10. def before_send(
  11. %{exception: [%{type: "Clickhousex.Error"}], original_exception: %{code: code}} = event
  12. )
  13. when is_atom(code) do
  14. %{event | fingerprint: ["clickhouse", "db_connection", to_string(code)]}
  15. end
  16. def before_send(%{event_source: :logger, message: "Clickhousex.Protocol " <> _} = event) do
  17. %{event | fingerprint: ["clickhouse", "db_connection", "protocol_error"]}
  18. end
  19. def before_send(
  20. %{
  21. exception: [%{type: "DBConnection.ConnectionError"}],
  22. original_exception: %{reason: reason}
  23. } = event
  24. ) do
  25. %{event | fingerprint: ["db_connection", reason]}
  26. end
  27. def before_send(%{extra: %{request: %Plausible.Ingestion.Request{}}} = event) do
  28. %{event | fingerprint: ["ingestion_request"]}
  29. end
  30. def before_send(event) do
  31. event
  32. end
  33. end