Laravel 日志分析 AI
一个基于人工智能的日志分析系统,能够自动监控、向量化处理和分析Laravel应用程序日志,以检测事件并评估其严重程度。
特点/特性
- 实时日志监控MCP服务器集成以实现持续监控日志文件
- AI驱动的分析通过Prism使用大型语言模型(如Claude、GPT等)分析日志条目
- 语义搜索向量嵌入支持基于相似性的日志分组
- 事件检测自动严重程度分类(低、中、高、严重)
- 关键警报系统可关闭的横幅用于显示关键事件,并跟踪查看状态
- 测试错误生成器一键生成5-10条随机测试日志,并自动进行AI分析
- 交互式仪表板采用Livewire驱动的用户界面,支持实时更新和轮询功能
- 异步处理基于队列的可扩展分析架构
技术栈
- Laravel 12最新的Laravel框架
- Prism v0.96多供应商大语言模型(LLM)集成
- Overpass v0.7(过路系统/覆盖程序 版本0.7)用于嵌入的Python机器学习桥梁
- Livewire 3 + Volt(可译为“Livewire 3 加上 Volt”或根据具体语境简化为“Livewire 3 Volt”,但为保持原样,直译为“Livewire 3 加 Volt”)交互式实时仪表盘
- Laravel MCP v0.3模型上下文协议服务器
- SQLite以JSON格式存储的向量嵌入,用于未来的语义搜索
- Tailwind CSS v4(版本4)现代风格,支持深色模式
- 句子变换器(或句子嵌入模型)用于384维嵌入的all-MiniLM-L6-v2模型
先决条件
- PHP 8.2 或更高版本
- Composer(注:在编程领域,Composer 通常指的是一个用于 PHP 项目的依赖管理工具,但在此仅作为普通词汇翻译)
- Node.js & NPM
- Python 3.9或更高版本
- SQLite 3.x
安装
- 克隆仓库
git clone
cd LogAnalysisAi- 安装PHP依赖项
composer install- 安装Node依赖项
npm install- 设置环境文件
cp .env.example .env
php artisan key:generate- 配置数据库
默认的 SQLite 数据库已经配置在 .env:
DB_CONNECTION=sqlite
DB_DATABASE=database/database.sqlite创建数据库文件:
touch database/database.sqlite- 运行迁移
php artisan migrate- 为Overpass安装Python依赖项
cd overpass-ai
pip3 install -r requirements.txt
cd ..注:首次运行时将下载sentence-transformers模型(约80MB)。
配置
AI服务提供商设置
在(系统/应用中)配置您偏好的大型语言模型(LLM)提供商 .env:
对于Anthropic的Claude:
LOG_ANALYSIS_PROVIDER=anthropic
LOG_ANALYSIS_MODEL=claude-3-haiku-20240307
ANTHROPIC_API_KEY=your_api_key_here对于OpenAI:
LOG_ANALYSIS_PROVIDER=openai
LOG_ANALYSIS_MODEL=gpt-4-turbo
OPENAI_API_KEY=your_api_key_here分析参数
调整AI分析设置:
LOG_ANALYSIS_MAX_TOKENS=200
LOG_ANALYSIS_TEMPERATURE=0.3Python桥接配置
Overpass 已预配置为使用 overpass-ai 目录。确保已激活 Python 3.9+:
python3 --version # Should show Python 3.9 or higher运行应用程序
快速入门(推荐)
使用单个命令一次性启动所有服务:
composer run dev这将启动:Web服务器、队列工作进程、日志查看器(Pail)以及Vite开发服务器。
个性化服务
或者,分别运行服务:
1. 启动开发服务器
php artisan serve2. 启动队列工作者 在另一个终端中:
php artisan queue:work3. 构建前端资源 用于开发:
npm run dev对于生产:
npm run build4. MCP 服务器(可选) MCP服务器随网络服务器自动运行。访问地址为:
http://loganalysisai.test/mcp/log-watcher使用MCP Inspector进行测试:
php artisan mcp:inspector使用
网络仪表板
访问 http://loganalysisai.test (如果使用 Laravel Herd)或者 http://localhost:8000 以访问显示以下内容的交互式仪表板:
- 最近的日志条目(最新10条)
- AI检测到的事件(最近5起)
- 针对未查看事件的紧急警告横幅
- 实时刷新功能(每10秒自动轮询一次)
生成测试错误
仪表板上包含一个“生成测试错误”按钮,该按钮会创建5-10条具有不同严重程度(严重、错误、警告、信息、调试)的随机日志条目。这些日志会自动:
- 写给
storage/logs/laravel.log - 通过分析流程进行处理
- 使用sentence-transformers进行向量化
- 由您配置的大型语言模型(LLM)进行分析
- 在仪表板上以严重程度分类显示
这是测试完整AI分析工作流程的最简单方法。
关键警报
当系统检测到严重事件(如磁盘空间警告或数据库连接池耗尽)时,这些事件会以红色警报横幅的形式出现在仪表板顶部。您可以点击X按钮来关闭这些警报,点击后它们会被标记为“已查看”,并防止再次出现。
MCP集成
该应用程序包含一个用于AI助手集成的MCP(模型上下文协议)服务器。它可在 /mcp/log-watcher 并提供:
- 工具:
monitor_logs- 使用AI处理最近的日志条目 - 资源:
log_entries- 访问分析后的日志数据
监控日志
您可以手动触发日志分析:
use App\Actions\LogMonitor;
$monitor = new LogMonitor();
$monitor->handleNewLine('[2024-10-22 12:00:00] production.ERROR: Database connection failed');生成测试数据
测试完整分析流程的最佳方法是生成真实的日志条目:
php artisan tinker// Generate log entries that will be analyzed by AI
Log::error('Database connection failed');
Log::warning('High memory usage detected: 95%');
Log::error('API rate limit exceeded for endpoint /users');
Log::critical('Payment gateway timeout - transaction failed');
exit这些日志将自动:
- 被日志监控器检测到
- 触发分析队列作业
- 通过Overpass获取矢量化数据
- 由Prism AI进行分析
- 在仪表板上创建可见的事件
或者,使用工厂方法创建示例数据(跳过分析):
// Create log entries without analysis
App\Models\LogEntry::factory()->count(20)->create();
// Create incidents directly
App\Models\Incident::factory()->count(5)->create();开发命令
使用 Laravel Pint 格式化代码:
vendor/bin/pint检查特定文件:
vendor/bin/pint --dirty运行 Tinker REPL:
php artisan tinker清除所有缓存:
php artisan optimize:clear项目结构
app/
├── Actions/ # Domain logic classes
│ ├── LogMonitor.php
│ ├── LogVectorizer.php
│ ├── LogAnalyzer.php
│ └── IncidentManager.php
├── Jobs/ # Queue jobs
│ └── AnalyzeLogJob.php
├── Mcp/ # MCP server components
│ ├── Servers/
│ ├── Tools/
│ └── Resources/
└── Models/ # Eloquent models
├── LogEntry.php
├── LogVector.php
└── Incident.php
overpass-ai/ # Python ML bridge
├── main.py
├── vectorize.py
└── requirements.txt
resources/views/livewire/ # Volt components
└── log-dashboard.blade.php建筑学
该应用程序遵循了整洁架构模式:
- 日志摄入:
LogMonitor创造LogEntry记录 - 异步处理:
AnalyzeLogJob被派入队列 - 向量化:
LogVectorizer通过Overpass生成嵌入表示 - AI分析:
LogAnalyzer使用Prism来评估严重程度 - 事件创建:
IncidentManager存储分析结果 - 仪表盘显示Livewire展示实时洞察
常见问题
队列未处理
确保队列工作者正在运行:
php artisan queue:work --verbosePython环境错误
重新安装Python依赖项:
cd overpass-ai
pip3 install --upgrade -r requirements.txt如果你看到“ModuleNotFoundError: No module named 'sentence_transformers'”,请确保你已经安装了所需的模块。
大语言模型(LLM)API错误
请检查您的API密钥配置,并确保您有足够的信用额度/配额:
php artisan tinker
>>> config('prism.providers.anthropic.api_key')数据库锁定错误
SQLite 的并发能力有限。对于生产环境,请考虑使用 PostgreSQL 或 MySQL。
教程
这个项目旨在作为将AI功能集成到Laravel应用中的高级教程。它展示了:
- 通过Prism实现多供应商大型语言模型(LLM)集成
- Python与Overpass的机器学习桥梁
- MCP服务器实现
- 实时Livewire仪表板
- 基于队列的异步处理
- 用于领域逻辑组织的主动模式
一份涵盖架构、模式和实现细节的全面教程已备好,可供查阅 .ai/tutorial.md该教程面向高级Laravel开发者,内容涵盖:
- 主动模式及其相较于传统服务类的优势所在
- 使用Overpass的Python/PHP桥接架构
- 使用 SQLite JSON 列进行向量存储
- 通过Prism实现大型语言模型(LLM)与结构化输出的集成
- 用于人工智能无障碍的MCP服务器实现
- 从日志摄入到事件检测的完整请求流程
注这是一个教育项目。为了专注于核心功能,故意省略了自动化测试。
许可证
这个项目是开源软件,采用MIT许可证授权。
