什麼是 Laravel Nightwatch
Laravel Nightwatch 是持續監控 Laravel 應用正式環境的託管 SaaS 平台。它會即時收集與可視化 HTTP 請求、SQL 查詢、例外、佇列 Job、日誌、排程任務等整個應用的遙測資料。Nightwatch 是付費服務(月費制)。免費方案也可使用,但可收集的事件數有上限。要在免費方案下實用地使用,後述的取樣與過濾設定必不可少。
與 Telescope、Pulse 的差異
Nightwatch 與 Laravel 生態系既有的監控/除錯工具目的不同。以下整理各自的用途。
它收集的資訊與 Telescope 幾乎相同,但 Nightwatch 會讓 Agent 常駐並將資料送到雲端。因此即使伺服器當機也能查看歷史資料,也能集中管理多台伺服器、多個應用。
架構
Nightwatch 採用在 Laravel 應用與 Nightwatch 雲端之間夾入 Agent 的架構。 Agent 於本機(127.0.0.1:2407)等待,接收 Laravel 應用的事件後轉送到雲端。因此需要讓 Agent 程序持續運作。
安裝與初始設定
1. 建立帳號與應用
於 nightwatch.laravel.com 建立帳號,並註冊組織與應用。註冊後會發行環境 token。2. 安裝套件
--dev flag。Nightwatch 是設計於正式環境使用。
3. 設定 token
於.env 加入 token。
4. 啟動 Agent
5. 於測試環境停用
執行測試時建議停用 Nightwatch。phpunit.xml 設定。
免費方案下實用使用的設定
降低取樣率
NIGHTWATCH_REQUEST_SAMPLE_RATE 預設 1.0(全部收集)。免費方案建議降到 0.1(10%)左右。
停用查詢收集
資料庫查詢占事件量的大宗。免費方案下停用查詢收集,可留下更多空間收重要事件(例外、請求、Job)。其他過濾設定
視需要也可停用快取事件或郵件收集。免費方案推薦設定總覽
主要功能
請求監控
依每個 HTTP 請求收集回應時間、狀態碼、路由資訊等。可找出異常慢的 endpoint、發現效能瓶頸。例外追蹤
即時捕捉正式環境未處理的例外。堆疊追蹤與原始碼片段會自動記錄,便於原因調查。日誌收集
與 Laravel 日誌系統(如Log::error())整合,把結構化日誌送到 Nightwatch。
Job 與排程任務監控
追蹤佇列 Job 與排程任務的執行紀錄、成功/失敗狀態、執行時間,能快速找出批次處理問題。部署追蹤
把每次發佈的變更與問題連結起來,能可視化查詢「這次部署後例外變多了」這類問題。警示與通知
可搭配 Slack 整合或 Webhook,於例外爆增或效能劣化時立即通知。Telescope 與 Nightwatch 的使用時機
- 本機開發 → Telescope
- 想要正式環境彙整儀表板 → Pulse
- 想要正式環境詳細追蹤與警示 → Nightwatch
總結
Laravel Nightwatch 是大幅提升正式 Laravel 應用可觀測性的強大 SaaS。導入時請注意以下幾點:- 需要讓 Agent 程序常時運作
- 免費方案幾乎必設
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1與NIGHTWATCH_IGNORE_QUERIES=true - Telescope(開發)、Pulse(彙整)、Nightwatch(監控)角色不同,可以併用
Laravel Telescope 實務技巧
本機開發除錯請使用 Telescope。