Integração com o Sentry
O que é o Sentry
O Sentry é uma ferramenta para monitorar e depurar a estabilidade e o desempenho de aplicações. O Sentry dá acesso aos eventos que você envia para ele a partir da sua aplicação.
Na maioria das vezes, o Sentry é usado para monitorar erros (exceções). Você pode enriquecer os erros com contexto para entender melhor o problema:
- Argumentos da requisição - Tags para agrupar exceções - Estado do ambiente: variáveis de ambiente, estado da aplicação e outros atributos globais
Você encontra a lista completa de funcionalidades no site oficial: https://sentry.io/welcome/
Instalação
Instale o pacote
Instale o pacote necessário yiisoft/yii-sentry com o seguinte comando:
composer require yiisoft/yii-sentry --prefer-distInstale um driver HTTP
A biblioteca getsentry/sentry-php exige o pacote php-http/httplug e algum driver HTTP. No exemplo abaixo, vamos usar o adaptador do Guzzle.
Você encontra a lista de todos os adaptadores nesta página.
Para instalar os pacotes, execute o seguinte comando:
composer require php-http/httplug php-http/guzzle7-adapter --prefer-distConfiguração
Obtenha e guarde o token
Em seguida, configure a aplicação.
Primeiro, cadastre-se no Sentry e crie um projeto.
Depois, nas configurações do projeto, na aba “General Settings”, encontre o campo “Security Token” e copie o valor dele.
Agora coloque esse token na configuração do pacote. Por padrão, a configuração fica em config/packages/yiisoft/yii-sentry/config/params.php. Defina o token copiado como valor do elemento do array em yiisoft/yii-sentry => options => dsn. Exemplo:
'yiisoft/yii-sentry' => [
'enabled' => true,
'options' => [
- 'dsn' => '',
+ 'dsn' => 'TOKEN',
],
],Configure o cliente HTTP
Depois de instalar o cliente HTTP, configure-o.
Crie o arquivo config/common/sentry.php e coloque nele o seguinte código:
<?php
declare(strict_types=1);
return [
\Http\Client\HttpClient::class => \GuzzleHttp\Client::class,
\Http\Client\HttpAsyncClient::class => [
'class' => \Http\Adapter\Guzzle7\Client::class,
'__construct()' => [
\Yiisoft\Factory\Definition\Reference::to(\Http\Client\HttpClient::class),
],
],
];Integração
Web
O suporte do Sentry para web é implementado como middleware.
Isso significa que você só precisa adicionar o SentryMiddleware à lista global de middlewares em config/web/application.php:
return [
Yiisoft\Yii\Web\Application::class => [
'__construct()' => [
'dispatcher' => DynamicReference::to(static function (Injector $injector) {
return ($injector->make(MiddlewareDispatcher::class))
->withMiddlewares(
[
Router::class,
SubFolder::class,
+ SentryMiddleware::class,
ErrorCatcher::class,
]
);
}),
'fallbackHandler' => Reference::to(NotFoundHandler::class),
],
],
];Console
O Sentry suporta o console por meio de um handler para o evento ConsoleEvents::ERROR.
O pacote fornece um arquivo de configuração que inscreve a aplicação nesse evento automaticamente.