Laravel 큐 마스터하기: Laravel Job Monitor 소개
Source: Dev.to

Laravel에서 백그라운드 작업을 모니터링하는 것은 언제나 약간의 도전이었습니다. Laravel Horizon은 Redis에 대해서는 훌륭하지만, 데이터베이스, SQS 또는 다른 드라이버를 사용하는 많은 개발자들은 여전히 눈앞이 캄캄한 경우가 많습니다. Horizon을 사용하더라도 특정 작업에 대한 상세 실행 기록과 실시간 진행 상황을 얻는 것이 항상 쉬운 것은 아닙니다.
그래서 저는 첫 번째 Laravel 패키지를 소개하게 되어 기쁩니다: Laravel Job Monitor.
Laravel Job Monitor란?
laravel-job-monitor는 Laravel의 큐 시스템에 자동으로 연결되어 시스템에 들어오는 모든 작업을 추적하는 가벼운 패키지입니다. 작업이 처리 중이든, 완료되었든, 실패했든 관계없이 실행 시간, 시도 횟수, 상세 오류 로그 등을 포함한 전체 감사 로그를 제공합니다.
주요 기능
1. 자동 “Zero‑Touch” 추적
패키지를 설치하기만 하면 기존 작업 코드를 변경할 필요가 없습니다. 설치 후 표준 큐 이벤트를 청취하고 즉시 기록을 시작합니다.
2. 실시간 진행 상황 추적
영상 변환이나 대규모 데이터 가져오기와 같은 장시간 실행 작업이 있나요? 이제 간단한 트레이트를 사용해 0 %부터 100 %까지 진행 상황을 추적할 수 있습니다:
use JSandaruwan\LaravelJobMonitor\Traits\TracksJobProgress;
class MassiveImportJob implements ShouldQueue
{
use TracksJobProgress;
public function handle()
{
$this->updateProgress(10); // 10% 완료
// ... 무거운 작업 ...
$this->updateProgress(90); // 90% 완료
}
}
3. 내장 REST API
이 패키지는 통합을 핵심으로 설계되었습니다. 사전 구축된 구성 가능한 API 엔드포인트가 제공되어 자체 대시보드를 만들거나 기존 관리자 패널에 작업 상태를 쉽게 연동할 수 있습니다.
GET /api/job-monitor/jobs– 고급 필터링(상태, 큐, 날짜 등) 지원 목록GET /api/job-monitor/jobs/stats– 큐 상태 전반에 대한 개요POST /api/job-monitor/jobs/{id}/retry– 실패한 작업을 한 번의 클릭으로 재시도
4. 의존성 제로
벤더 폴더를 가볍게 유지하세요! 외부 모니터링 서비스나 무거운 서드파티 자산이 전혀 필요하지 않습니다. 기존 데이터베이스를 활용해 기록을 저장합니다.
내가 이를 만든 이유
많은 프로젝트에서 특정 백그라운드 작업이 오래 걸리거나 특정 사용자에게 실패하는 이유를 확인하기 위해 activity_logs 혹은 job_statuses 테이블을 직접 만들곤 했습니다. 모든 Laravel 프로젝트에서 표준화된 방법으로 이를 처리하고 싶었고, 여러분에게도 도움이 되길 바랍니다!
시작하기
Composer로 패키지를 설치합니다:
composer require j-sandaruwan/laravel-job-monitor
구성을 퍼블리시하고 마이그레이션을 실행합니다:
php artisan vendor:publish --provider="JSandaruwan\LaravelJobMonitor\JobMonitorServiceProvider"
php artisan migrate
이제 작업이 자동으로 모니터링됩니다.
앞으로의 계획
- 바로 사용할 수 있는 Blade 대시보드 내장
- 작업 배치 진행 상황 지원
- 실패한 작업에 대한 맞춤 알림 트리거(Slack/Discord)
GitHub에 있는 소스 코드를 확인하고 이슈나 PR을 자유롭게 열어 주세요. 첫 번째 패키지가 유용하다면 GitHub에 ⭐️를 눌러 주시면 큰 힘이 됩니다!
행복한 코딩 되세요! 🚀
— Janith Sandaruwan