Laravel Nightwatch란
Laravel Nightwatch는 Laravel 애플리케이션의 프로덕션 환경을 지속적으로 모니터링하기 위한 호스티드형 SaaS 플랫폼입니다. HTTP 요청, SQL 쿼리, 예외, 큐 잡, 로그, 스케줄 태스크 등 애플리케이션 전체의 텔레메트리 데이터를 실시간으로 수집 · 가시화합니다.Nightwatch는 유료 서비스(월 과금)입니다. 무료 플랜에서도 이용할 수 있지만, 수집 가능한 이벤트 수에 상한이 있습니다. 무료 플랜에서 실용적으로 사용하려면 후술하는 샘플링과 필터링 설정이 필수입니다.
Telescope · Pulse와의 차이
Nightwatch는 Laravel 에코시스템에 있는 기존 모니터링 · 디버그 도구와 목적이 다릅니다. 각각의 용도를 정리합니다.| 도구 | 용도 | 호스팅 | 대상 환경 |
|---|---|---|---|
| Telescope | 개발 시 디버그 · 쿼리 조사 | 자체 (Laravel 앱 내) | 로컬 개발 |
| Pulse | 퍼포먼스 지표의 집계 · 표시 | 자체 (Laravel 앱 내) | 프로덕션 · 스테이징 |
| Nightwatch | 프로덕션 앱의 실시간 모니터링 | Laravel 호스티드형 SaaS | 프로덕션 환경 |
아키텍처
Nightwatch는 Laravel 앱과 Nightwatch 클라우드 사이에 에이전트 프로세스를 끼우는 구성을 취하고 있습니다. 에이전트는 로컬(127.0.0.1:2407)에서 대기하며, Laravel 앱으로부터의 이벤트를 받아 클라우드에 전송합니다. 이 때문에 에이전트 프로세스를 상시 가동시켜야 합니다.
설치와 초기 설정
1. 계정 · 애플리케이션 생성
nightwatch.laravel.com에서 계정을 만들고, 조직과 애플리케이션을 등록합니다. 애플리케이션 등록 후에 환경 토큰이 발행됩니다.2. 패키지 설치
--dev 플래그는 불필요합니다. Nightwatch는 프로덕션 환경에서의 사용을 전제로 하고 있습니다.
3. 토큰 설정
.env 파일에 토큰을 추가합니다.
4. 에이전트 기동
5. 테스트 환경에서의 비활성화
테스트 실행 시에는 Nightwatch를 비활성화하는 것을 권장합니다.phpunit.xml에서도 설정할 수 있습니다.
무료 플랜에서 실용적으로 사용하기 위한 설정
샘플링 레이트 낮추기
NIGHTWATCH_REQUEST_SAMPLE_RATE는 기본이 1.0(전 요청 수집)입니다. 무료 플랜에서는 0.1(10%) 정도로 억제할 것을 권장합니다.
쿼리 수집 비활성화
데이터베이스 쿼리는 이벤트 수의 큰 비율을 차지합니다. 무료 플랜에서는 쿼리 수집을 비활성화함으로써, 중요한 이벤트(예외 · 요청 · 잡)의 저장 여지를 확보할 수 있습니다.그 외의 필터링 설정
필요에 따라 캐시 이벤트나 메일 수집도 비활성화할 수 있습니다.무료 플랜 권장 설정 정리
주요 기능
요청 모니터링
HTTP 요청마다 응답 시간, 상태 코드, 라우트 정보 등을 수집합니다. 비정상적으로 느린 엔드포인트를 특정하여 퍼포먼스의 병목을 발견할 수 있습니다.예외 추적
프로덕션 환경에서 발생한 미처리 예외를 실시간으로 포착합니다. 스택 트레이스와 소스 코드의 스니펫이 자동으로 기록되어, 원인 조사가 용이해집니다.로그 수집
Laravel의 로그 시스템(Log::error() 등)과 통합하여, 구조화 로그를 Nightwatch에 송신합니다.
잡 · 스케줄 태스크 모니터링
큐 잡이나 스케줄 태스크의 실행 이력, 성공 · 실패 상태, 실행 시간을 추적합니다. 배치 처리의 문제를 재빨리 특정할 수 있습니다.배포 추적
릴리스별 변경점과 문제를 연결시킵니다. “이 배포 후부터 예외가 늘어났다”는 조사가 시각적으로 가능합니다.알림과 통지
Slack 연동이나 Webhook을 사용하여, 예외의 급증이나 퍼포먼스 열화를 즉시 통지할 수 있습니다.Telescope와 Nightwatch의 사용 구분
- 로컬 개발 → Telescope
- 프로덕션 환경의 집계 대시보드가 필요 → Pulse
- 프로덕션 환경의 상세한 트레이스나 알림이 필요 → Nightwatch
정리
Laravel Nightwatch는 프로덕션 Laravel 애플리케이션의 가시성을 크게 향상시키는 강력한 SaaS 도구입니다. 도입 시에는 이하의 점을 짚어 두세요.- 에이전트 프로세스를 상시 가동시켜야 함
- 무료 플랜은
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1과NIGHTWATCH_IGNORE_QUERIES=true의 설정이 실용상 필수 - Telescope(개발) · Pulse(집계) · Nightwatch(모니터링)는 역할이 다르며, 병용할 수 있음
Laravel Telescope 실전 테크닉
로컬 개발에서의 디버그에는 Telescope를 사용합니다.