groups: - name: application_alerts interval: 30s rules: - alert: HighErrorRate expr: sum(rate(http_requests_total{status=~"5.."}[5m])) by (job, route) / sum(rate(http_requests_total[5m])) by (job, route) > 0.05 for: 2m labels: severity: warning annotations: summary: "应用 {{ $labels.job }} 路由 {{ $labels.route }} 错误率过高" description: "错误率超过5% (当前: {{ $value | humanizePercentage }})" - alert: HighLatency expr: histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, job, route)) > 1 for: 3m labels: severity: warning annotations: summary: "应用 {{ $labels.job }} 路由 {{ $labels.route }} 延迟过高" description: "95百分位响应时间超过1秒 (当前: {{ $value }}s)" - alert: ApiHealthCheckFailed expr: up{job="fischerx-api"} == 0 for: 1m labels: severity: critical annotations: summary: "FischerX API 不可用" description: "API服务已超过1分钟不可用" - alert: HighRequestRate expr: sum(rate(http_requests_total[1m])) by (job) > 1000 for: 5m labels: severity: info annotations: summary: "应用 {{ $labels.job }} 请求量过高" description: "当前请求率: {{ $value }} qps" - alert: DatabaseConnectionError expr: increase(database_connection_errors_total[5m]) > 10 for: 2m labels: severity: critical annotations: summary: "数据库连接错误" description: "过去5分钟内数据库连接错误: {{ $value }} 次" - alert: CacheHitRateLow expr: (sum(rate(cache_hits_total[5m])) by (job) / sum(rate(cache_requests_total[5m])) by (job)) < 0.7 for: 5m labels: severity: warning annotations: summary: "应用 {{ $labels.job }} 缓存命中率过低" description: "缓存命中率低于70% (当前: {{ $value | humanizePercentage }})"