每天幾百條錯誤通知有救嗎?Laravel Scheduler 結合 LLM 自動摘要日誌實戰
☰ 目錄 table-of-contents.md
早上打開 Slack,幾百條 Error Log 通知瀑布般刷下來,點開一看,九成都是同一個資料庫 Deadlock 或第三方 API Timeout 引發的連鎖反應。與其練就一目十行的掃 Log 神功,不如讓 Laravel Scheduler 每天定時把日誌餵給 LLM,自動摘要、分類並分析根因。本文示範這條自動化管線的完整實作,把告警海濃縮成一份能直接行動的每日摘要。
現在已經是 2026 年了,AIOps(人工智慧 IT 營運)和 Agentic Workflow 已經成為企業標配,難道我們還要像十年前一樣,用肉眼一行一行去比對 laravel.log 嗎?
今天這篇文章,我要帶大家實作一套現代化的運維解法:將 Laravel 任務排程 (Scheduler) 結合 LLM:自動摘要、分類並分析每日系統錯誤日誌。我們會讓 Laravel 在每天早上你進辦公室前,自動把昨天的海量 Log 清洗、去重,然後丟給 LLM(大型語言模型)進行深度分析,最後在 Slack 吐出一份「說人話」的運維早報。
為什麼傳統的 Log 監控在 2026 年已經不夠用?
在過去,我們通常會依賴 Sentry、Flare 或是 ELK Stack 來收集日誌。這些工具很棒,但它們解決的是「收集」與「告警」的問題,而不是「分析」與「洞察」。
- 警報疲勞 (Alert Fatigue): 當同一個 API 發生 500 次 502 Bad Gateway,你的手機會震動 500 次,最後你只會選擇把它靜音。
- 缺乏上下文: Sentry 可以告訴你哪一行出錯,但無法告訴你:「這可能與昨天剛部署的新版資料庫遷移有關」。
- 無法分辦輕重緩急: 到底是前端發送了錯誤的 Payload,還是核心支付模組掛了?工程師往往需要點進去仔細看才能判斷。
導入 LLM 後,我們可以讓 AI 扮演「初階運維工程師」的角色,幫我們把雜亂的日誌變成結構化的行動指南 (Actionable Insights)。
架構設計:Laravel Scheduler x LLM 分析管線
這套系統的底層邏輯(Pillar)其實非常清晰,我們可以用 Laravel 強大的排程器來驅動整個管線,整個 Cluster 包含三個核心步驟:
- 資料萃取與清洗 (Data Extraction & Sanitization): 讀取前一天的
laravel.log,透過正則表達式萃取出 Error 等級以上的日誌,並進行去重與 PII (機敏資料) 脫敏。 - 提示詞工程與 LLM 分析 (Prompt Engineering & LLM Analysis): 將壓縮後的日誌特徵轉化為結構化 Prompt,呼叫 OpenAI (GPT-4o) 或 Anthropic (Claude 3.5) 的 API。
- 任務排程與通知 (Scheduler & Notification): 透過 Laravel Console Command 封裝邏輯,並掛載到 Console Kernel 中,每天早上 8:30 準時將分析報告推送到 Slack 或 Teams。
步驟一:萃取與清洗日誌資料
如果直接把整個 laravel.log 丟給 LLM,除了會引發嚴重的 Token 費用超標,還可能洩漏使用者的個資。因此,我們必須先在本地進行「聚合」(Aggregation)。
// app/Console/Commands/AnalyzeDailyLogs.php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Str;
class AnalyzeDailyLogs extends Command
{
protected $signature = 'logs:analyze-daily';
protected $description = '解析昨天的日誌並透過 LLM 產生運維摘要';
public function handle()
{
$logPath = storage_path('logs/laravel.log');
if (!File::exists($logPath)) {
$this->info('沒有找到日誌檔案。');
return;
}
$logs = File::get($logPath);
// 簡易的正則匹配,抓取昨天的 ERROR
$yesterday = now()->subDay()->format('Y-m-d');
preg_match_all("/\[{$yesterday}.*?\].*?local\.ERROR: (.*?)(?=\[\d{4}-\d{2}-\d{2}|\z)/s", $logs, $matches);
$errors = $matches[1] ?? [];
if (empty($errors)) {
$this->info('昨天系統一切平安,沒有錯誤!');
return;
}
// 去重與計算發生頻率
$errorCounts = array_count_values(array_map(function ($err) {
// 截斷過長的 Stack trace,只取第一行作為特徵
return Str::limit(explode("\n", $err)[0], 200);
}, $errors));
$this->callLLM($errorCounts);
}
}
工程師的囉嗦時間:記得一定要做字串截斷!很多 Exception 帶有超長的 Stack Trace,如果全塞給 LLM,你的 API 帳單月底會讓你哭出來。
步驟二:與 LLM 互動 (Prompt 規劃)
接下來,我們要撰寫一個精準的 System Prompt,要求 LLM 將錯誤進行分類,並給出修復建議。在 2026 年,我們通常會強制 LLM 回傳 JSON 格式,方便後續系統解析。
private function callLLM(array $errorCounts)
{
$prompt = "你是一位資深 Laravel 運維工程師。以下是昨日系統發生的錯誤與頻率:\n";
$prompt .= json_encode($errorCounts, JSON_UNESCAPED_UNICODE);
$prompt .= "\n請將這些錯誤分類為:【嚴重警告】、【API/第三方異常】、【輕微例外】。\n";
$prompt .= "請摘要最主要的錯誤原因,並給出優先處理建議。\n";
$prompt .= "請務必以繁體中文回答,並保持精簡專業。";
// 這裡假設你已經整合了 openai-php/client 或類似的套件
$response = \OpenAI::chat()->create([
'model' => 'gpt-4o',
'messages' => [
['role' => 'system', 'content' => '你是一個專注於 Laravel 系統監控的 AI 助理。'],
['role' => 'user', 'content' => $prompt],
],
]);
$analysis = $response->choices[0]->message->content;
$this->sendToSlack($analysis);
}
步驟三:設定 Laravel Scheduler
邏輯寫好之後,只需要在 routes/console.php (在較新的 Laravel 版本中,排程器已移至此處) 註冊這個任務即可。
use Illuminate\Support\Facades\Schedule;
// 每天早上 8:30 準時發送日誌分析早報
Schedule::command('logs:analyze-daily')->dailyAt('08:30')->onOneServer();
加上 onOneServer() 是一個好習慣,如果你有部署多台 Worker,這能確保每天只會有一台機器去執行日誌分析,避免你的 Slack 被同樣的報告洗版。
ROI:導入這套架構後的真實效益
將 Laravel 任務排程 (Scheduler) 結合 LLM:自動摘要、分類並分析每日系統錯誤日誌 後,我們的團隊感受到了質的飛躍:
- 節省超過 80% 的排錯時間: 以前需要工程師花 30 分鐘大海撈針,現在 AI 已經幫你整理出「昨天金流 API Timeout 發生了 150 次,建議檢查防火牆設定」。
- 消滅警報疲勞: 日常輕微的 404 錯誤會被 AI 歸類在「輕微例外」,不會再讓你感到焦慮。
- 知識傳承: LLM 給出的修復建議,對於新進的 Junior 工程師來說是非常棒的學習教材。
如果你也受夠了每天對著冰冷的 Log 檔案發呆,強烈建議在你的 Laravel 專案中實作這套流程。技術的演進是為了解放工程師的雙手,讓我們能專注在更有價值的商業邏輯架構上。
相關閱讀
如果你對 Laravel 與 AI 自動化運維有興趣,強烈建議閱讀我們為 2026 年整理的最新實戰指南:
- 半夜不再被警報叫醒!2026 實戰:從日誌中挖掘黃金,在 Laravel 中串接 AI 進行系統異常預測與自我修復
- AI 聽不懂你的資料庫?Laravel MCP 實戰:2026 年後端工程師必備的 AI 通訊標準
- API 狂噴、工作流暴走?2026 企業架構必讀:為自動化注入「自我修復」與「異常隔離」的資安防禦基因
想為您的企業導入 AI 自動化運維與專屬的 Laravel 系統開發嗎?交給經驗豐富的技術夥伴為您把關!歡迎前往 浪花科技聯絡表單 填寫需求,我們將有專人與您探討最佳的技術解決方案!
常見問題
Sentry、ELK 這類工具不夠用嗎,為什麼還要用 LLM 分析日誌?
把 Laravel 日誌交給 LLM 分析前為什麼要先在本地聚合與清洗?
如何讓 LLM 的日誌分析結果方便系統後續處理?
怎麼讓這套日誌分析每天定時自動執行?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。