File size: 3,393 Bytes
a42b16d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
"""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-specific monitoring
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(), [])
|