| """Monitoring and observability integration.""" |
|
|
| from __future__ import annotations |
|
|
| from typing import Any, Dict, List, Optional |
|
|
|
|
| class MonitoringIntegration: |
| """Integrates with monitoring and observability tools.""" |
|
|
| def get_monitoring_setup( |
| self, |
| framework: str, |
| platform: str |
| ) -> Dict[str, Any]: |
| """Get monitoring setup recommendations.""" |
| |
| monitoring_tools = { |
| "next.js": { |
| "recommended": ["Vercel Analytics", "Sentry", "LogRocket"], |
| "built_in": "Vercel Analytics (if on Vercel)" |
| }, |
| "django": { |
| "recommended": ["Sentry", "New Relic", "Datadog"], |
| "built_in": "Django Debug Toolbar (dev only)" |
| }, |
| "fastapi": { |
| "recommended": ["Prometheus", "Grafana", "Sentry"], |
| "built_in": "FastAPI metrics endpoint" |
| }, |
| "react": { |
| "recommended": ["Sentry", "LogRocket", "Mixpanel"], |
| "built_in": "React DevTools (dev only)" |
| }, |
| } |
| |
| framework_tools = monitoring_tools.get(framework.lower(), { |
| "recommended": ["Sentry", "New Relic", "Datadog"], |
| "built_in": "Application logs" |
| }) |
| |
| |
| platform_monitoring = { |
| "vercel": "Vercel Analytics and Speed Insights included", |
| "netlify": "Netlify Analytics available", |
| "aws": "CloudWatch monitoring included", |
| "gcp": "Cloud Monitoring and Logging included", |
| "azure": "Azure Monitor included", |
| } |
| |
| return { |
| "framework": framework, |
| "platform": platform, |
| "recommended_tools": framework_tools["recommended"], |
| "built_in_monitoring": framework_tools.get("built_in", ""), |
| "platform_monitoring": platform_monitoring.get(platform.lower(), "Use third-party tools"), |
| "setup_steps": self._get_setup_steps(framework, platform), |
| "key_metrics": self._get_key_metrics(framework) |
| } |
|
|
| def _get_setup_steps(self, framework: str, platform: str) -> List[str]: |
| """Get setup steps for monitoring.""" |
| steps = [ |
| f"1. Set up error tracking (Sentry recommended for {framework})", |
| f"2. Configure application performance monitoring", |
| "3. Set up log aggregation", |
| "4. Configure alerting for critical errors", |
| "5. Set up uptime monitoring", |
| ] |
| |
| if platform.lower() in ["aws", "gcp", "azure"]: |
| steps.append(f"6. Enable {platform} native monitoring") |
| |
| return steps |
|
|
| def _get_key_metrics(self, framework: str) -> List[str]: |
| """Get key metrics to monitor.""" |
| base_metrics = [ |
| "Response time (p50, p95, p99)", |
| "Error rate", |
| "Request rate", |
| "CPU and memory usage" |
| ] |
| |
| framework_metrics = { |
| "next.js": ["Page load time", "Time to First Byte (TTFB)", "Core Web Vitals"], |
| "django": ["Database query time", "Request processing time"], |
| "fastapi": ["API response time", "Concurrent requests"], |
| } |
| |
| return base_metrics + framework_metrics.get(framework.lower(), []) |
|
|
|
|