Monitoreo de conexiones de bases de datos con db:monitor de Laravel

  • Publicado el 21 febrero, 2025
  • Palabras: 164

¿Necesitas monitorear las conexiones de tu base de datos de manera proactiva? El comando db:monitor de Laravel te ayuda a rastrear las conexiones abiertas y reaccionar cuando exceden los umbrales definidos.

Monitoreo de conexiones de bases de datos con db:monitor de Laravel

A partir de Laravel 9.24, puedes monitorear las conexiones de tu base de datos y recibir notificaciones cuando se acerquen a niveles críticos. Esta función ayuda a prevenir el agotamiento del grupo de conexiones al avisarte antes de que surjan problemas. Veamos cómo funciona:

 

// Schedule monitoring for specific databases with thresholds
php artisan db:monitor --databases=mysql,pgsql --max=100

 

#Ejemplo práctico

A continuación se explica cómo configurar la supervisión de la conexión de la base de datos:

 

// AppProvidersAppServiceProvider
use AppNotificationsDatabaseApproachingMaxConnections;
use IlluminateDatabaseEventsDatabaseBusy;
use IlluminateSupportFacadesEvent;
use IlluminateSupportFacadesNotification;

public function boot(): void
{
    // Listen for DatabaseBusy events
    Event::listen(function (DatabaseBusy $event) {
        Notification::route('mail', 'dev@example.com')
            ->notify(new DatabaseApproachingMaxConnections(
                $event->connectionName,
                $event->connections
            ));
    });
}

// AppConsoleKernel
protected function schedule(Schedule $schedule)
{
    // Monitor every minute
    $schedule->command('db:monitor --database=mysql --max=100')
        ->everyMinute();
}

// AppNotificationsDatabaseApproachingMaxConnections
class DatabaseApproachingMaxConnections extends Notification
{
    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->error()
            ->subject('Database Connection Alert')
            ->line("The {$this->connectionName} database has {$this->connections} open connections.")
            ->line('This exceeds the configured threshold.');
    }
}

 

El comando db:monitor proporciona una manera simple pero efectiva de prevenir problemas de conexión a la base de datos. Piense en él como un perro guardián de sus conexiones a la base de datos: monitorea continuamente el grupo de conexiones y le avisa cuando se acerca a territorio peligroso.

 

Esto se vuelve especialmente valioso cuando:

  • Ejecuta aplicaciones con muchos usuarios simultáneos
  • Administra varias conexiones a la base de datos
  • Depura problemas del grupo de conexiones
  • Garantiza la estabilidad de la aplicación
  • Planifica operaciones de escalado


Por ejemplo, establecer un umbral en el 80 % de sus conexiones máximas le da tiempo para reaccionar antes de que se agote el grupo.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Monitoreo de operaciones de caché en Laravel: Guía de eventos
88

Monitoreo de operaciones de caché en Laravel: Guía de eventos

Monitoreo de tareas mejorado con los métodos condicionales de ping de Laravel
614

Monitoreo de tareas mejorado con los métodos condicionales de ping de Laravel

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión