Integração entre Ignition e Flare para Monitoramento de Erros em Produção com Laravel

O Ignition oferece uma interface visual elegante para exibição de erros em aplicações Laravel, enquanto o Flare atua como um serviço externo de rastreamento de exceções. Juntos, permitem monitorar falhas em tempo real no ambiente de produção, acelerando a identificação e resolução de problemas críticos.

Pré-requisitos

  • Laravel 8.0 ou superior
  • PHP 7.4+
  • Composer intsalado

Instale o pacote principal via Composer:

composer require facade/ignition

Configuração do Flare

  1. Crie uma conta no painel do Flare e registre um novo projeto.
  2. Obtenha a chave de API exclusiva do projeto.
  3. Adicione-a ao arquivo .env:
FLARE_KEY=insira_sua_chave_aqui

Habilitando a Integração

O arquivo de configuração do Ignition (config/ignition.php) deve conter:

'flare' => [
    'enabled' => true,
    'key' => env('FLARE_KEY'),
],

Defina os níveis de erro a serem reportados (recomenda-se evitar logs excessivos em produção):

'report_exceptions' => [
    'level' => E_ERROR | E_WARNING | E_PARSE,
],

Tratmaento de Exceções em Produção

No arquivo app/Exceptions/Handler.php, registre o relatório automático de exceções:

use Facade\FlareClient\Flare;

public function register(): void
{
    $this->reportable(function (Throwable $e) {
        if (app()->bound(Flare::class)) {
            app(Flare::class)->report($e);
        }
    });
}

Testando o Monitoramento

Adicione uma rota temporária para simular uma falha:

Route::get('/debug-trigger', fn() => throw new RuntimeException('Erro de teste para Flare'));

Ao acessar essa rota, o erro será exibido localmente pelo Ignition (se em modo de desenvolvimento) e enviado automaticamente ao Flare em produção.

Personalizações Avançadas

Filtragem de Dados Sensíveis

No arquivo config/flare.php, configure o que deve ser omitido:

'reporting' => [
    'anonymize_ips' => true,
    'report_query_bindings' => false,
    'collect_git_information' => true,
],

Soluções Personalizadas para Exceções

Crie provedores de solução específicos. Exemplo para erro de autenticação no banco:

class InvalidDbCredentialsProvider extends SolutionProvider
{
    public function canSolve(Throwable $throwable): bool
    {
        return $throwable instanceof PDOException
            && str_contains($throwable->getMessage(), 'Access denied');
    }

    public function getSolutions(Throwable $throwable): array
    {
        return [new UpdateDatabaseCredentialsSolution()];
    }
}

Boas Práticas

  • Ative alertas por Slack, email ou Microsoft Teams no painel do Flare.
  • Use agrupamento de exceções semelhantes para reduzir ruído.
  • Analise periodicamente os relatórios agregados para identificar padrões recorrentes.
  • Mantenha o pacote facade/ignition atualizado regularmente.

Solução de Problemas Comuns

Problema: Erros não aparecem no Flare em produção.
Solução: Veriifque se APP_DEBUG=false e execute:

php artisan flare:test

Problema: Volume excessivo de eventos.
Solução: Limite a taxa de envio em config/flare.php:

'throttle' => [
    'enabled' => true,
    'max_events_in_minute' => 50,
],

Tags: laravel Ignition Flare monitoramento-de-erros PHP

Publicado em 8-13 10:18