Guida all'integrazione APM in Laravel con Horizon: tracciamento di job e queue worker senza modificare il codice
Introduzione
L'integrazione di un sistema di Application Performance Monitoring (APM) in un'applicazione Laravel che utilizza Horizon per la gestione delle code può sembrare un compito arduo, soprattutto se si desidera evitare modifiche al codice esistente. Tuttavia, con gli strumenti giusti e una guida passo-passo, è possibile ottenere un tracciamento completo dei job e dei queue worker senza dover intervenire sul codice.
In questo articolo, ti guideremo attraverso il processo di integrazione di un APM in Laravel con Horizon, mostrando come tracciare i job e i queue worker in modo non intrusivo. Utilizzeremo Lescopr come strumento APM di riferimento, grazie alla sua facilità di integrazione e alla sua capacità di fornire dati dettagliati senza richiedere modifiche al codice.
Prerequisiti
Prima di iniziare, assicurati di avere i seguenti prerequisiti:
- Un'applicazione Laravel funzionante.
- Laravel Horizon installato e configurato.
- Accesso a un sistema di gestione delle code come Redis.
- Un account Lescopr per il tracciamento APM.
Installazione e Configurazione di Laravel Horizon
Installazione di Horizon
Se non hai ancora installato Laravel Horizon, puoi farlo utilizzando Composer:
composer require laravel/horizon
Dopo l'installazione, pubblica gli asset di Horizon:
php artisan horizon:install
Configurazione di Horizon
Configura Horizon per utilizzare il driver Redis. Apri il file config/horizon.php e assicurati che la configurazione sia simile a questa:
'environments' => [
'production' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'processes' => 10,
'tries' => 3,
],
],
],
Integrazione di Lescopr APM
Installazione dell'Agent Lescopr
Per integrare Lescopr APM, installa l'agent Lescopr utilizzando Composer:
composer require lescopr/lescopr-laravel
Configurazione dell'Agent
Pubblica il file di configurazione di Lescopr:
php artisan vendor:publish --provider="Lescopr\Laravel\LescoprServiceProvider"
Apri il file config/lescopr.php e configura l'agent con le tue credenziali Lescopr:
'api_key' => 'your_lescopr_api_key',
'enabled' => true,
Avvio dell'Agent
Avvia l'agent Lescopr aggiungendo il seguente codice al file bootstrap/app.php:
$app->register(Lescopr\Laravel\LescoprServiceProvider::class);
Tracciamento dei Job e dei Queue Worker
Configurazione di Horizon per il Tracciamento
Per abilitare il tracciamento dei job e dei queue worker, modifica il file app/Providers/AppServiceProvider.php e aggiungi il seguente codice:
use Lescopr\Laravel\Lescopr;
public function boot()
{
Horizon::routeMailNotificationsTo('your_email@example.com');
Horizon::auth(function ($request) {
return true; // Modifica questa logica per adattarla alle tue esigenze di autenticazione
});
Lescopr::trackHorizonJobs();
}
Verifica del Tracciamento
Dopo aver configurato Horizon e Lescopr, avvia Horizon utilizzando il seguente comando:
php artisan horizon
Accedi al dashboard di Lescopr per verificare che i job e i queue worker siano tracciati correttamente. Dovresti vedere i dati relativi ai job in esecuzione, ai tempi di esecuzione e agli eventuali errori.
Ottimizzazione e Monitoraggio
Ottimizzazione delle Performance
Utilizza i dati raccolti da Lescopr per ottimizzare le performance dei tuoi job e queue worker. Identifica i job che richiedono più tempo per essere eseguiti e cerca di ottimizzarli.
Monitoraggio Continuo
Configura avvisi e notifiche in Lescopr per essere informato in caso di errori o anomalie nei job e nei queue worker. Questo ti permetterà di intervenire rapidamente e mantenere l'affidabilità del sistema.
Conclusione
In questo articolo, abbiamo visto come integrare un APM in Laravel con Horizon per tracciare job e queue worker senza modificare il codice esistente. Utilizzando Lescopr, è possibile ottenere una visibilità completa sui job in esecuzione e sui queue worker, migliorando l'affidabilità e le performance dell'applicazione.
Per approfondire, la documentazione di Lescopr descrive la configurazione passo dopo passo.