Instalación - Laravel
Antes de empezar, crea un proyecto en el panel de DockRay. En sus ajustes encontrarás el token del proyecto - el identificador público que forma parte de la URL de ingesta - y en la pestaña Claves de API generarás una clave privada. La clave se muestra una sola vez, al generarla: DockRay guarda únicamente su hash. Si todavía no tienes un proyecto, empieza por Primeros pasos.
Requisitos
- Laravel 10 o posterior,
- PHP 8.2 o posterior,
- Composer 2.
Instalar el paquete
composer require dockcodes/dock-ray-laravel
php artisan vendor:publish --tag=ray-config
El service provider se detecta automáticamente: no hay nada que registrar a mano. Publicar la configuración crea config/ray.php; sin ella el paquete sigue funcionando con sus valores por defecto.
Credenciales
RAY_TOKEN=token-del-proyecto
RAY_PRIVATE_KEY=clave-privada-del-proyecto
RAY_TRACES_SAMPLE_RATE=0.2
Sin RAY_TOKEN y RAY_PRIVATE_KEY el paquete permanece inactivo: ni peticiones ni errores. Por eso puedes conectarlo una vez y no envolverlo en ninguna condición: el entorno local simplemente no recibe credenciales.
Conectar el envío de excepciones
Laravel 11 y 12, en bootstrap/app.php:
use Dock\Ray\Laravel\Ray;
use Illuminate\Foundation\Configuration\Exceptions;
->withExceptions(function (Exceptions $exceptions) {
$exceptions->reportable(fn (Throwable $e) => Ray::report($e));
})
Laravel 10, en app/Exceptions/Handler.php:
public function register(): void
{
$this->reportable(fn (Throwable $e) => Ray::report($e));
}
Ray::report() nunca lanza ni relanza: una caída de la monitorización no debe romper el manejo de errores desde el que se la llamó. Además devuelve void, así que no corta el propio registro del framework.
Medición del tiempo de peticiones
La medición requiere añadir el middleware a los grupos que quieras medir, normalmente web y api:
->withMiddleware(function (Illuminate\Foundation\Configuration\Middleware $middleware) {
$middleware->appendToGroup('web', \Dock\Ray\Laravel\Http\Middleware\TrackTransaction::class);
})
Nada se mide mientras ray.traces_sample_rate sea 0.
La primera prueba
Lo más sencillo, desde Tinker: la llamada recorre el mismo camino que el envío desde la aplicación.
php artisan tinker --execute="\Dock\Ray\Laravel\Ray::message('Mensaje de control DockRay');"