Laravel Pulse란
Laravel Pulse는 애플리케이션의 성능과 사용 상황을 한눈에 파악할 수 있는 모니터링 대시보드입니다. 느린 잡이나 느린 엔드포인트의 병목을 특정하거나, 가장 액티브한 사용자를 조사할 수 있습니다.Telescope와 Pulse의 차이
| 특징 | Laravel Pulse | Laravel Telescope |
|---|---|---|
| 목적 | 앱 전체의 경향·집계 데이터를 모니터링 | 개별 리퀘스트·이벤트의 상세 디버그 |
| 데이터 | 집계된 메트릭 | 개별 이벤트의 로그 |
| 적합한 장면 | 프로덕션 환경의 성능 모니터링 | 개발·스테이징 환경에서의 디버그 |
개별 이벤트의 상세 디버그에는 Laravel Telescope를 사용해 주세요.
데이터 플로우 도
설치
마이그레이션 완료 후,
/pulse 라우트에서 대시보드에 접근할 수 있습니다.
설정 파일 공개
설정 파일을 별도로 공개하여 커스터마이즈할 수도 있습니다.대시보드 접근
인증 설정
기본적으로local 환경에서만 대시보드에 접근할 수 있습니다.
프로덕션 환경에서는 viewPulse 인증 게이트를 커스터마이즈하여 접근 제어를 설정해 주세요.
app/Providers/AppServiceProvider.php의 boot 메서드에 위의 코드를 추가합니다.
대시보드 커스터마이즈
대시보드의 뷰를 공개해 카드나 레이아웃을 커스터마이즈할 수 있습니다.resources/views/vendor/pulse/dashboard.blade.php를 편집합니다.
대시보드는 Livewire로 동작하고 있기 때문에, JavaScript의 빌드 없이 커스터마이즈할 수 있습니다.
cols과 rows 프로퍼티로 크기와 위치를 조정할 수 있습니다.
레코더
레코더는 애플리케이션의 이벤트를 캡처해 Pulse 데이터베이스에 기록합니다. 설정은config/pulse.php의 recorders 섹션에서 관리합니다.
Requests / Slow Requests
Requests 레코더는 애플리케이션에의 리퀘스트 정보를 캡처합니다.
느린 라우트의 임계값(기본값: 1000ms), 샘플링 레이트, 무시할 경로를 설정할 수 있습니다.
Slow Jobs
SlowJobs 레코더는 임계값을 넘은 느린 잡을 캡처합니다(기본값: 1000ms).
잡별로 다른 임계값을 설정할 수 있습니다.
Exceptions
Exceptions 레코더는 애플리케이션에서 발생한 리포트 가능한 예외를 캡처합니다.
예외 클래스와 발생 장소로 그룹화됩니다.
Cache
CacheInteractions 레코더는 캐시의 히트와 미스를 캡처합니다.
유사한 키를 그룹화하는 정규 표현식도 설정할 수 있습니다.
Queues
Queues 레코더는 큐 내의 잡의 처리량(큐잉됨, 처리 중, 처리 완료, 릴리스, 실패)을 캡처합니다.
Servers
Servers 레코더는 애플리케이션을 구동하는 서버의 CPU, 메모리, 스토리지 사용량을 캡처합니다.
이 레코더를 사용하려면 모니터링 대상의 각 서버에서 pulse:check 명령을 상시 실행해야 합니다.
gethostname()의 값이 사용됩니다. 커스터마이즈하려면 환경 변수를 설정합니다.
Users
UserRequests와 UserJobs 레코더는 리퀘스트나 잡을 송신한 사용자 정보를 캡처하여 “Application Usage” 카드에 표시합니다.
Redis Ingest
높은 트래픽 환경에서는 엔트리를 Redis 스트림에 송신한 후 데이터베이스에 가져오는 방법을 이용할 수 있습니다.pulse:work 명령으로 스트림을 감시해야 합니다.
샘플링
높은 트래픽 환경에서는 모든 이벤트를 캡처하면 데이터베이스에 수백만 행이 축적될 가능성이 있습니다. 샘플링을 활성화하면 일부 이벤트만 기록하고, 대시보드에서 근사값으로 표시합니다.~가 표시됩니다.
메트릭의 엔트리 수가 많을수록, 정확도를 유지하면서 샘플링 레이트를 낮출 수 있습니다.
환경 변수
주요 설정은 환경 변수로 제어할 수 있습니다.| 환경 변수 | 설명 | 기본값 |
|---|---|---|
PULSE_ENABLED | Pulse 활성/비활성 | true |
PULSE_DB_CONNECTION | Pulse가 사용하는 DB 커넥션 | 앱의 기본값 |
PULSE_INGEST_DRIVER | 인제스트 드라이버 (redis 등) | storage |
PULSE_SERVER_NAME | 서버 식별명 | gethostname()의 값 |
PULSE_SLOW_REQUESTS_THRESHOLD | 느린 리퀘스트의 임계값(ms) | 1000 |
PULSE_SLOW_JOBS_THRESHOLD | 느린 잡의 임계값(ms) | 1000 |
PULSE_SLOW_QUERIES_THRESHOLD | 느린 쿼리의 임계값(ms) | 1000 |
커스텀 카드
독자적인 Pulse 카드를 작성해, 애플리케이션 고유의 데이터를 표시할 수 있습니다. 카드는 Livewire 컴포넌트로 구현합니다.Pulse::record 메서드를 사용합니다.
정리
| 하고 싶은 일 | 방법 |
|---|---|
| Pulse 설치 | composer require laravel/pulse |
| 대시보드 접근 | /pulse 라우트 |
| 프로덕션 환경에서 접근 제어 | viewPulse 게이트 정의 |
| 서버 모니터링 활성화 | php artisan pulse:check를 상시 기동 |
| 샘플링 설정 | sample_rate 옵션으로 비율 지정 |
다음 단계
에러 핸들링
애플리케이션의 예외 처리와 리포트의 구조를 배웁니다.
로깅
Laravel의 로그 시스템의 설정과 활용 방법을 설명합니다.