2022-07-14 03:03:59 +03:00
|
|
|
defmodule Plausible.SentryFilter do
|
2022-09-22 18:24:54 +03:00
|
|
|
@moduledoc """
|
|
|
|
Sentry callbacks for filtering and grouping events
|
|
|
|
"""
|
2022-07-14 03:03:59 +03:00
|
|
|
@behaviour Sentry.EventFilter
|
|
|
|
|
|
|
|
def exclude_exception?(%Sentry.CrashError{}, _source), do: true
|
2022-07-28 15:17:47 +03:00
|
|
|
def exclude_exception?(%Phoenix.NotAcceptableError{}, _), do: true
|
2023-01-13 20:04:09 +03:00
|
|
|
def exclude_exception?(%Plug.CSRFProtection.InvalidCSRFTokenError{}, _), do: true
|
|
|
|
def exclude_exception?(%Plug.Static.InvalidPathError{}, _), do: true
|
2022-07-14 03:26:59 +03:00
|
|
|
|
|
|
|
def exclude_exception?(exception, source) do
|
|
|
|
Sentry.DefaultEventFilter.exclude_exception?(exception, source)
|
|
|
|
end
|
2022-09-22 18:24:54 +03:00
|
|
|
|
|
|
|
@spec before_send(Sentry.Event.t()) :: Sentry.Event.t()
|
|
|
|
def before_send(event)
|
|
|
|
|
2023-01-12 19:22:45 +03:00
|
|
|
def before_send(
|
|
|
|
%{exception: [%{type: "Clickhousex.Error"}], original_exception: %{code: code}} = event
|
|
|
|
)
|
|
|
|
when is_atom(code) do
|
|
|
|
%{event | fingerprint: ["clickhouse", "db_connection", to_string(code)]}
|
|
|
|
end
|
|
|
|
|
2023-01-13 20:04:09 +03:00
|
|
|
def before_send(%{event_source: :logger, message: "Clickhousex.Protocol " <> _} = event) do
|
|
|
|
%{event | fingerprint: ["clickhouse", "db_connection", "protocol_error"]}
|
|
|
|
end
|
|
|
|
|
2023-01-16 15:05:56 +03:00
|
|
|
def before_send(
|
|
|
|
%{
|
|
|
|
exception: [%{type: "DBConnection.ConnectionError"}],
|
|
|
|
original_exception: %{reason: reason}
|
|
|
|
} = event
|
|
|
|
) do
|
|
|
|
%{event | fingerprint: ["db_connection", reason]}
|
|
|
|
end
|
|
|
|
|
2022-09-22 18:24:54 +03:00
|
|
|
def before_send(event) do
|
|
|
|
event
|
|
|
|
end
|
2022-07-14 03:03:59 +03:00
|
|
|
end
|