- Backend: Go API server with Gin framework - Frontend: React setup (placeholder) - ML Service: Python FastAPI skeleton - Docker Compose: Full stack configuration - Database: PostgreSQL schema with migrations - Documentation: Implementation plan and README Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
24 KiB
VictoriaLogs Manager - Implementation Plan
Project Overview
A comprehensive web application for managing VictoriaLogs with alerting, advanced reporting, and malicious pattern detection.
Milestones & Phases
Milestone 1: Foundation & Authentication (Week 1)
Goal: Complete project setup and implement authentication system
Duration: 5-7 days
Deliverables:
- Fully configured development environment
- Working JWT authentication
- User management system
- Role-based access control
Milestone 2: VictoriaLogs Integration (Week 2)
Goal: Implement log querying and exploration features
Duration: 5-7 days
Deliverables:
- VictoriaLogs HTTP client
- Log query API endpoints
- Logs Explorer UI
- Live tail functionality
- Export features
Milestone 3: Alert Management (Week 3)
Goal: Complete vmalert rule management system
Duration: 5-7 days
Deliverables:
- Alert rule CRUD operations
- YAML file generation
- vmalert integration
- Alert Manager UI
- Active alerts viewer
Milestone 4: Pattern Detection (Week 4)
Goal: Implement regex and ML-based pattern detection
Duration: 7-10 days
Deliverables:
- Regex pattern engine
- Pre-built pattern library
- ML service implementation
- Pattern Detection UI
- ML training and detection endpoints
Milestone 5: Reports & Dashboards (Week 5)
Goal: Build visualization and reporting system
Duration: 5-7 days
Deliverables:
- Report configuration system
- Dashboard page with widgets
- ECharts integration
- Report builder UI
- Multiple chart types
Milestone 6: Polish & Production (Week 6)
Goal: Production readiness and deployment
Duration: 5-7 days
Deliverables:
- Security hardening
- Performance optimization
- Documentation
- Testing
- Deployment guides
Detailed Task Breakdown
Milestone 1: Foundation & Authentication
Issue #1: Setup React Frontend
Priority: High Estimated Time: 2-3 hours
Tasks:
- Initialize Vite + React + TypeScript project
- Install dependencies (React Router, Zustand, Axios, Tailwind CSS)
- Configure Tailwind CSS
- Create basic folder structure
- Setup ESLint and Prettier
Files to Create:
frontend/package.jsonfrontend/vite.config.tsfrontend/tailwind.config.jsfrontend/src/main.tsxfrontend/src/App.tsx
Acceptance Criteria:
- Frontend dev server runs successfully
- Tailwind CSS is working
- Hot reload is functional
Issue #2: Implement JWT Utilities
Priority: High Estimated Time: 2 hours
Tasks:
- Create JWT token generation function
- Create JWT token validation function
- Implement claims structure
- Add token expiration handling
Files to Create:
backend/internal/utils/jwt.go
Acceptance Criteria:
- Can generate JWT tokens with user claims
- Can validate and parse JWT tokens
- Token expiration is enforced
Issue #3: Implement Authentication Handlers
Priority: High Estimated Time: 3-4 hours
Tasks:
- Create login handler (username/password)
- Create refresh token handler
- Create "get current user" handler
- Implement password hashing with bcrypt
- Add input validation
Files to Create:
backend/internal/api/handlers/auth.gobackend/internal/services/auth_service.go
Acceptance Criteria:
- POST /api/v1/auth/login returns JWT token
- POST /api/v1/auth/refresh refreshes token
- GET /api/v1/auth/me returns current user
- Passwords are securely hashed
Issue #4: Implement Authentication Middleware
Priority: High Estimated Time: 2 hours
Tasks:
- Create JWT validation middleware
- Create permission check middleware
- Create role check middleware
- Add error handling
Files to Create:
backend/internal/api/middleware/auth.go
Acceptance Criteria:
- Middleware validates JWT tokens
- Invalid tokens return 401
- Permission checks work correctly
- Role checks work correctly
Issue #5: Create User Repository
Priority: High Estimated Time: 2-3 hours
Tasks:
- Implement user CRUD operations
- Create database queries
- Add error handling
- Implement user lookup functions
Files to Create:
backend/internal/repository/user_repo.go
Acceptance Criteria:
- Can create new users
- Can retrieve users by ID/username/email
- Can update user information
- Can delete users
- Can list all users
Issue #6: Implement User Management API
Priority: High Estimated Time: 3 hours
Tasks:
- Create user CRUD endpoints
- Add role-based access control
- Implement user service layer
- Add input validation
Files to Create:
backend/internal/api/handlers/users.gobackend/internal/services/user_service.go
Acceptance Criteria:
- GET /api/v1/users returns user list (admin only)
- POST /api/v1/users creates user (admin only)
- PUT /api/v1/users/:id updates user (admin only)
- DELETE /api/v1/users/:id deletes user (admin only)
Issue #7: Create Auth Store (Frontend)
Priority: High Estimated Time: 2 hours
Tasks:
- Setup Zustand store for authentication
- Implement login/logout functions
- Add token persistence (localStorage)
- Create auth hooks
Files to Create:
frontend/src/store/authStore.tsfrontend/src/hooks/useAuth.ts
Acceptance Criteria:
- Auth state persists across page reloads
- Login updates auth state
- Logout clears auth state
Issue #8: Create API Client (Frontend)
Priority: High Estimated Time: 2 hours
Tasks:
- Setup Axios instance
- Add request interceptor (JWT token)
- Add response interceptor (401 handling)
- Create API client functions
Files to Create:
frontend/src/api/client.tsfrontend/src/api/auth.ts
Acceptance Criteria:
- All requests include JWT token
- 401 responses trigger logout
- API client is properly typed
Issue #9: Create Login Page
Priority: High Estimated Time: 3 hours
Tasks:
- Create login form UI
- Add form validation
- Implement login submission
- Add error handling
- Add loading states
Files to Create:
frontend/src/pages/Login.tsx
Acceptance Criteria:
- Login form validates inputs
- Successful login redirects to dashboard
- Error messages display correctly
- Loading state shows during request
Issue #10: Create Protected Route Component
Priority: High Estimated Time: 1 hour
Tasks:
- Create ProtectedRoute component
- Add authentication check
- Add role-based access
- Implement redirects
Files to Create:
frontend/src/components/common/ProtectedRoute.tsx
Acceptance Criteria:
- Unauthenticated users redirect to login
- Unauthorized users see error message
- Authorized users see content
Milestone 2: VictoriaLogs Integration
Issue #11: Create VictoriaLogs HTTP Client
Priority: High Estimated Time: 4 hours
Tasks:
- Create VictoriaLogs HTTP client
- Implement query method
- Implement tail method
- Implement facets method
- Implement stats query method
- Add error handling
Files to Create:
backend/pkg/vlogs/client.gobackend/pkg/vlogs/models.go
Acceptance Criteria:
- Can query VictoriaLogs
- Can tail logs in real-time
- Can fetch facets
- Can execute stats queries
Issue #12: Create Log Query Service
Priority: High Estimated Time: 3 hours
Tasks:
- Implement log query proxy
- Add authentication checks
- Implement rate limiting
- Add query validation
Files to Create:
backend/internal/services/vlogs_service.go
Acceptance Criteria:
- Service proxies requests to VictoriaLogs
- User permissions are enforced
- Rate limiting works per role
Issue #13: Implement Log Query API Endpoints
Priority: High Estimated Time: 3 hours
Tasks:
- Create POST /logs/query endpoint
- Create POST /logs/tail endpoint
- Create GET /logs/facets endpoint
- Create POST /logs/stats endpoint
- Create POST /logs/export endpoint
Files to Create:
backend/internal/api/handlers/logs.go
Acceptance Criteria:
- All endpoints return correct data
- Authentication is required
- Error handling is robust
Issue #14: Create Logs API Client (Frontend)
Priority: High Estimated Time: 2 hours
Tasks:
- Create logs API functions
- Add TypeScript types
- Implement query builder helper
Files to Create:
frontend/src/api/logs.tsfrontend/src/types/logs.ts
Acceptance Criteria:
- Can query logs from frontend
- All functions are properly typed
Issue #15: Create Logs Store (Frontend)
Priority: Medium Estimated Time: 2 hours
Tasks:
- Create Zustand store for logs
- Implement query state management
- Add pagination state
- Add filter state
Files to Create:
frontend/src/store/logsStore.ts
Acceptance Criteria:
- Store manages query state
- Pagination works correctly
- Filters are applied properly
Issue #16: Create Query Builder Component
Priority: High Estimated Time: 4-5 hours
Tasks:
- Create visual query builder UI
- Add field selector
- Add operator selector
- Add value input
- Implement query preview
- Add raw LogsQL editor toggle
Files to Create:
frontend/src/components/logs/QueryBuilder.tsx
Acceptance Criteria:
- Can build queries visually
- Can switch to raw LogsQL
- Query preview is accurate
Issue #17: Create Log Table Component
Priority: High Estimated Time: 4 hours
Tasks:
- Create virtualized table (react-window)
- Implement expandable rows
- Add column customization
- Add sorting
- Add loading states
Files to Create:
frontend/src/components/logs/LogTable.tsxfrontend/src/components/logs/LogDetails.tsx
Acceptance Criteria:
- Table performs well with 10,000+ rows
- Rows expand to show details
- Columns are customizable
Issue #18: Create Logs Explorer Page
Priority: High Estimated Time: 4 hours
Tasks:
- Create main Logs Explorer page
- Integrate QueryBuilder
- Integrate LogTable
- Add time range selector
- Add facets sidebar
- Add export button
Files to Create:
frontend/src/pages/LogsExplorer.tsxfrontend/src/components/logs/TimeRangeSelector.tsxfrontend/src/components/logs/FacetsSidebar.tsx
Acceptance Criteria:
- Can query and view logs
- Time range selector works
- Facets are clickable filters
Issue #19: Implement Live Tail (WebSocket)
Priority: Medium Estimated Time: 4 hours
Tasks:
- Implement WebSocket endpoint (backend)
- Create live tail component (frontend)
- Add auto-scroll
- Add pause/resume
- Add disconnect handling
Files to Create:
backend/internal/api/handlers/websocket.gofrontend/src/components/logs/LiveTail.tsxfrontend/src/hooks/useWebSocket.ts
Acceptance Criteria:
- Logs stream in real-time
- Can pause/resume streaming
- Handles disconnections gracefully
Issue #20: Implement Log Export
Priority: Low Estimated Time: 2 hours
Tasks:
- Add CSV export
- Add JSON export
- Add download handling
Files to Modify:
backend/internal/api/handlers/logs.gofrontend/src/components/logs/ExportButton.tsx
Acceptance Criteria:
- Can export logs as CSV
- Can export logs as JSON
- Large exports stream properly
Milestone 3: Alert Management
Issue #21: Create Alert Rule Models
Priority: High Estimated Time: 1 hour
Tasks:
- Define alert rule struct
- Add JSON/YAML tags
- Create validation functions
Files to Create:
backend/internal/models/alert.go
Acceptance Criteria:
- Alert rule model matches schema
- Validation functions work
Issue #22: Create Alert Repository
Priority: High Estimated Time: 3 hours
Tasks:
- Implement alert rule CRUD
- Add database queries
- Implement rule search/filter
Files to Create:
backend/internal/repository/alert_repo.go
Acceptance Criteria:
- Can create/read/update/delete alert rules
- Can filter rules by group/status
Issue #23: Implement vmalert Service
Priority: High Estimated Time: 5 hours
Tasks:
- Create vmalert service
- Implement YAML file generation
- Implement vmalert reload trigger
- Add active alerts fetching
- Add validation
Files to Create:
backend/internal/services/vmalert_service.go
Acceptance Criteria:
- Can generate valid YAML files
- vmalert reloads successfully
- Can fetch active alerts from vmalert
Issue #24: Implement Alert API Endpoints
Priority: High Estimated Time: 3 hours
Tasks:
- Create alert rule CRUD endpoints
- Add reload endpoint
- Add active alerts endpoint
- Add permissions checks
Files to Create:
backend/internal/api/handlers/alerts.go
Acceptance Criteria:
- All CRUD operations work
- Reload triggers vmalert reload
- Active alerts are fetched
Issue #25: Create Alert API Client (Frontend)
Priority: High Estimated Time: 2 hours
Tasks:
- Create alerts API functions
- Add TypeScript types
Files to Create:
frontend/src/api/alerts.tsfrontend/src/types/alerts.ts
Acceptance Criteria:
- Can manage alerts from frontend
- All functions are typed
Issue #26: Create Alert Rule Form Component
Priority: High Estimated Time: 4 hours
Tasks:
- Create alert rule form
- Add field validation
- Add LogsQL query builder
- Add labels/annotations editor
Files to Create:
frontend/src/components/alerts/AlertRuleForm.tsx
Acceptance Criteria:
- Form validates all fields
- Can create/edit rules
- LogsQL syntax is validated
Issue #27: Create Alert Rule YAML Editor
Priority: Medium Estimated Time: 3 hours
Tasks:
- Integrate Monaco Editor
- Add YAML syntax highlighting
- Add YAML validation
- Add save functionality
Files to Create:
frontend/src/components/alerts/AlertRuleEditor.tsx
Acceptance Criteria:
- YAML editor has syntax highlighting
- Invalid YAML shows errors
- Can save YAML directly
Issue #28: Create Alerts Manager Page
Priority: High Estimated Time: 4 hours
Tasks:
- Create alerts list view
- Add create/edit/delete actions
- Add active alerts section
- Add alert history
Files to Create:
frontend/src/pages/AlertsManager.tsxfrontend/src/components/alerts/AlertRuleList.tsxfrontend/src/components/alerts/AlertStatus.tsx
Acceptance Criteria:
- Can view all alert rules
- Can create/edit/delete rules
- Active alerts are displayed
Milestone 4: Pattern Detection
Issue #29: Create Pattern Models
Priority: High Estimated Time: 1 hour
Tasks:
- Define pattern struct
- Add validation
- Create pre-built patterns
Files to Create:
backend/internal/models/pattern.go
Acceptance Criteria:
- Pattern model is complete
- Pre-built patterns are defined
Issue #30: Create Pattern Repository
Priority: High Estimated Time: 2 hours
Tasks:
- Implement pattern CRUD
- Add pattern search
Files to Create:
backend/internal/repository/pattern_repo.go
Acceptance Criteria:
- Can manage patterns in database
Issue #31: Implement Regex Pattern Detection
Priority: High Estimated Time: 4 hours
Tasks:
- Create pattern detection engine
- Implement regex matching
- Generate LogsQL queries
- Execute detection
Files to Create:
backend/internal/services/pattern_service.go
Acceptance Criteria:
- Can detect patterns using regex
- Returns matched logs
Issue #32: Implement ML Feature Extraction
Priority: High Estimated Time: 4 hours
Tasks:
- Create feature extractor
- Extract temporal features
- Extract log content features
- Extract numerical features
Files to Create:
ml-service/app/utils/feature_extraction.py
Acceptance Criteria:
- Extracts relevant features from logs
- Features are properly normalized
Issue #33: Implement ML Anomaly Detector
Priority: High Estimated Time: 5 hours
Tasks:
- Implement Isolation Forest model
- Add training functionality
- Add prediction functionality
- Add model persistence
Files to Create:
ml-service/app/models/anomaly_detector.py
Acceptance Criteria:
- Model trains successfully
- Model detects anomalies
- Model can be saved/loaded
Issue #34: Implement ML Service Endpoints
Priority: High Estimated Time: 3 hours
Tasks:
- Complete /api/ml/train endpoint
- Complete /api/ml/detect endpoint
- Add VictoriaLogs integration
Files to Modify:
ml-service/app/main.pyml-service/app/api/endpoints.py
Acceptance Criteria:
- Training endpoint works
- Detection endpoint works
- Fetches logs from VictoriaLogs
Issue #35: Create ML Service Client (Backend)
Priority: High Estimated Time: 2 hours
Tasks:
- Create ML service HTTP client
- Implement train/detect methods
Files to Create:
backend/internal/services/ml_service.go
Acceptance Criteria:
- Can communicate with ML service
- Handles timeouts properly
Issue #36: Create Pattern Detection Page
Priority: High Estimated Time: 5 hours
Tasks:
- Create pattern library UI
- Add regex pattern form
- Add ML detection trigger
- Display detection results
Files to Create:
frontend/src/pages/PatternDetection.tsxfrontend/src/components/patterns/PatternLibrary.tsxfrontend/src/components/patterns/RegexPatternForm.tsxfrontend/src/components/patterns/MLAnomalyViewer.tsx
Acceptance Criteria:
- Can browse pattern library
- Can create custom patterns
- Can trigger ML detection
- Results are displayed clearly
Milestone 5: Reports & Dashboards
Issue #37: Create Report Models
Priority: High Estimated Time: 1 hour
Tasks:
- Define report struct
- Define widget configs
Files to Create:
backend/internal/models/report.go
Acceptance Criteria:
- Report model is complete
Issue #38: Create Report Repository
Priority: High Estimated Time: 2 hours
Tasks:
- Implement report CRUD
Files to Create:
backend/internal/repository/report_repo.go
Acceptance Criteria:
- Can manage reports
Issue #39: Implement Report Execution Engine
Priority: High Estimated Time: 4 hours
Tasks:
- Create report execution service
- Execute queries for widgets
- Aggregate data
Files to Create:
backend/internal/services/report_service.go
Acceptance Criteria:
- Can execute report queries
- Returns formatted data for charts
Issue #40: Integrate ECharts
Priority: High Estimated Time: 2 hours
Tasks:
- Install echarts-for-react
- Create chart wrapper components
Files to Create:
frontend/src/components/charts/BaseChart.tsx
Acceptance Criteria:
- ECharts renders correctly
- Charts are responsive
Issue #41: Create Chart Components
Priority: High Estimated Time: 4 hours
Tasks:
- Create TimeSeriesChart
- Create PieChart
- Create BarChart
- Create HeatmapChart
Files to Create:
frontend/src/components/charts/TimeSeriesChart.tsxfrontend/src/components/charts/PieChart.tsxfrontend/src/components/charts/BarChart.tsxfrontend/src/components/charts/HeatmapChart.tsx
Acceptance Criteria:
- All chart types render correctly
- Charts are interactive
Issue #42: Create Dashboard Page
Priority: High Estimated Time: 5 hours
Tasks:
- Create dashboard layout
- Add summary cards
- Add multiple chart widgets
- Make layout responsive
Files to Create:
frontend/src/pages/Dashboard.tsxfrontend/src/components/dashboard/SummaryCard.tsxfrontend/src/components/dashboard/DashboardGrid.tsx
Acceptance Criteria:
- Dashboard displays key metrics
- Multiple widgets are shown
- Layout is responsive
Issue #43: Create Report Builder UI
Priority: Medium Estimated Time: 5 hours
Tasks:
- Create report builder interface
- Add widget configuration
- Add query builder for widgets
- Add save/load functionality
Files to Create:
frontend/src/components/reports/ReportBuilder.tsxfrontend/src/components/reports/WidgetConfig.tsx
Acceptance Criteria:
- Can create custom reports
- Can configure widgets
- Reports are saved
Milestone 6: Polish & Production
Issue #44: Implement Rate Limiting
Priority: High Estimated Time: 3 hours
Tasks:
- Add rate limiting middleware
- Configure limits per role
- Add rate limit headers
Files to Create:
backend/internal/api/middleware/ratelimit.go
Acceptance Criteria:
- Rate limiting works per role
- Returns 429 when exceeded
Issue #45: Add Input Validation
Priority: High Estimated Time: 3 hours
Tasks:
- Add query validation
- Add pattern validation
- Add length limits
- Add SQL injection prevention
Files to Create:
backend/internal/utils/validator.go
Acceptance Criteria:
- Dangerous inputs are rejected
- Validation messages are clear
Issue #46: Add Audit Logging
Priority: High Estimated Time: 3 hours
Tasks:
- Create audit logging middleware
- Log sensitive operations
- Add audit log viewer (admin)
Files to Create:
backend/internal/api/middleware/audit.gobackend/internal/services/audit_service.go
Acceptance Criteria:
- All sensitive operations are logged
- Admins can view audit logs
Issue #47: Add Loading States and Error Handling
Priority: Medium Estimated Time: 4 hours
Tasks:
- Add loading spinners
- Add error toast notifications
- Improve error messages
- Add retry logic
Files to Create:
frontend/src/components/common/LoadingSpinner.tsxfrontend/src/components/common/Toast.tsxfrontend/src/hooks/useToast.ts
Acceptance Criteria:
- Loading states show during requests
- Errors display user-friendly messages
Issue #48: Optimize Performance
Priority: Medium Estimated Time: 4 hours
Tasks:
- Add Redis caching (optional)
- Optimize database queries
- Add frontend code splitting
- Optimize bundle size
Acceptance Criteria:
- Page load time < 2s
- Bundle size < 500KB
Issue #49: Write API Documentation
Priority: Medium Estimated Time: 4 hours
Tasks:
- Document all API endpoints
- Add request/response examples
- Create Postman collection
Files to Create:
docs/api.mddocs/postman_collection.json
Acceptance Criteria:
- All endpoints are documented
- Examples are provided
Issue #50: Write User Guide
Priority: Low Estimated Time: 3 hours
Tasks:
- Write getting started guide
- Document features
- Add screenshots
Files to Create:
docs/user-guide.mddocs/screenshots/
Acceptance Criteria:
- User guide is complete
- Screenshots are included
Issue #51: Write Deployment Guide
Priority: Medium Estimated Time: 3 hours
Tasks:
- Document Docker deployment
- Document production configuration
- Add troubleshooting section
Files to Create:
docs/deployment.md
Acceptance Criteria:
- Deployment guide is complete
- Production checklist is provided
Issue #52: Add Unit Tests
Priority: Medium Estimated Time: 6 hours
Tasks:
- Write backend unit tests (critical paths)
- Write frontend unit tests (critical components)
- Add test CI pipeline
Files to Create:
backend/*_test.gofrontend/src/**/*.test.tsx.github/workflows/test.ymlor.gitea/workflows/test.yml
Acceptance Criteria:
- Critical paths have tests
- Tests pass in CI
Summary
Total Estimated Time: 160-200 hours (4-5 weeks)
Total Issues: 52
Total Milestones: 6
Priority Breakdown:
- High Priority: 38 issues
- Medium Priority: 11 issues
- Low Priority: 3 issues