# 灵犀 · 队列监控告警规则(A6-INF-01) # 指标来源:API 的 Prometheus 端点 GET /api/v1/metrics(text/plain; version=0.0.4) # 指标定义:lingxi_queue_jobs / lingxi_queue_oldest_waiting_seconds / lingxi_queue_failure_ratio / # lingxi_worker_heartbeat_age_seconds / lingxi_outbox_pending_total / lingxi_outbox_dead_letter_total # # 加载方式见同目录 README.md;阈值调整需走配置评审(R-26 精神:阈值集中管理)。 groups: - name: lingxi-queue rules: # 队列积压:队首任务等待超过 10 分钟 - alert: LingxiQueueBacklog expr: lingxi_queue_oldest_waiting_seconds > 600 for: 5m labels: severity: warning component: queue annotations: summary: '队列 {{ $labels.queue }} 积压' description: '队列 {{ $labels.queue }} 队首任务已等待 {{ $value | humanizeDuration }}(阈值 600s,持续 5m);请检查 worker 是否在跑、并发是否被占满。' # 失败率:failed/(failed+completed) 超过 5% - alert: LingxiQueueHighFailureRatio expr: lingxi_queue_failure_ratio > 0.05 for: 10m labels: severity: warning component: queue annotations: summary: '队列 {{ $labels.queue }} 失败率偏高' description: '队列 {{ $labels.queue }} 失败率 {{ $value | humanizePercentage }}(阈值 5%,持续 10m);请查看失败 job 与 worker 日志。' # worker 心跳缺失(-1)或超过 60s 未续写 - alert: LingxiWorkerHeartbeatMissing expr: lingxi_worker_heartbeat_age_seconds < 0 or lingxi_worker_heartbeat_age_seconds > 60 for: 2m labels: severity: critical component: worker annotations: summary: '队列 {{ $labels.queue }} 的 worker 心跳缺失' description: '队列 {{ $labels.queue }} 心跳年龄 {{ $value }}s(缺失为 -1,阈值为 60s,持续 2m);worker 可能已退出或 Redis 不可用。' # outbox 死信:出现即需要人工介入(避免事件永久卡住) - alert: LingxiOutboxDeadLetter expr: lingxi_outbox_dead_letter_total > 0 for: 1m labels: severity: critical component: outbox annotations: summary: 'Outbox 出现死信事件' description: '累计死信 {{ $value }} 条(outbox_events.last_error=dead_lettered);请核对 payload 与目标队列配置后人工补投。'