groups: - name: fred-ml rules: - alert: FredMLHighErrorRate expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1 for: 2m labels: severity: critical annotations: summary: "High error rate detected" description: "Error rate is {{ $value }} errors per second" - alert: FredMLHighResponseTime expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 2 for: 2m labels: severity: warning annotations: summary: "High response time detected" description: "95th percentile response time is {{ $value }} seconds" - alert: FredMLDown expr: up{job="fred-ml"} == 0 for: 1m labels: severity: critical annotations: summary: "FredML service is down" description: "FredML service has been down for more than 1 minute" - alert: FredMLHighMemoryUsage expr: (container_memory_usage_bytes{container="fred-ml"} / container_spec_memory_limit_bytes{container="fred-ml"}) > 0.8 for: 5m labels: severity: warning annotations: summary: "High memory usage detected" description: "Memory usage is {{ $value | humanizePercentage }}" - alert: FredMLHighCPUUsage expr: rate(container_cpu_usage_seconds_total{container="fred-ml"}[5m]) > 0.8 for: 5m labels: severity: warning annotations: summary: "High CPU usage detected" description: "CPU usage is {{ $value | humanizePercentage }}" - alert: FredMLAPIRateLimit expr: increase(fred_api_rate_limit_exceeded_total[5m]) > 0 for: 1m labels: severity: warning annotations: summary: "FRED API rate limit exceeded" description: "API rate limit has been exceeded in the last 5 minutes"