Sentry event filter
Chcete předejít překročení limitu API požadavků v Sentry a mít lepší kontrolu nad tím, co se odesílá?
Vojta Brtník
6. února 2025 • 2 min. čtení
Sentry event filter
Setkali jste se někdy s tím, že vám došel limit na API požadavky v Sentry? Chcete tomu předejít a mít lepší kontrolu nad tím, co se odesílá? Pomocí callbacku before_send
si do Sentry přidejte možnost filtrovat odchozí události a mějte ji pak více pod kontrolou.
V konfiguraci sentry by to mohlo vypadat třeba takto:
\Sentry\init([
'dsn' => 'https://examplePublicKey@o0.ingest.sentry.io/0',
'before_send' => $this->beforeSendFilter->filter(...),
]);
Vlastní BeforeSendFilter bude sledovat počet odeslaných chyb v historii se stejným otiskem. Pokud překročím stanovený limit, chybu budu ignorovat, protože v sentry o ní již vím. Při vydání nové verze aplikace, je vhodné stav počítadel smazat.
private function getEventFingerprint(\Sentry\Event $event, ?\Sentry\EventHint $hint): string
{
$parts = [];
if ($hint !== null && $hint->exception !== null) {
$parts[] = $hint->exception->getFile();
$parts[] = $hint->exception->getLine();
} else {
$parts[] = $event->getMessage();
}
return md5(serialize($parts));
}
private function isOverLimit(string $eventFingerprint): bool
{
...
}
private function increaseCounter(string $eventFingerprint): void
{
...
}
public function filter(\Sentry\Event $event): ?\Sentry\Event
{
$eventFingerprint = $this->getEventFingerprint($event);
if ($this->isOverLimit($eventFingerprint)) {
return null;
}
$this->increaseCounter($eventFingerprint);
return $event;
}
Tento přístup pomůže minimalizovat zbytečné API požadavky, snížit náklady a zachovat přehlednější reportování chyb v Sentry.
Chceš se bavit s námi?
Hledáme do týmu další zapálené vývojáře.
Mrkněte na kariéru a napište Michalovi.
Michal Matuška | CTO +420 737 770 642