.agents/design/common/redis/signoz-redis-alerts.md
本文面向 SigNoz 管理员,记录可直接配置的 Redis/BullMQ 日志告警、阈值和降噪规则。 DAL 架构、失败合同和发布约束见 FastGPT Data Access Layer 设计。
示例统一使用:
service.name = 'fastgpt-cn-client'
实际值由 OTEL_SERVICE_NAME 决定。App 与 Pro 使用不同 service name 时分别创建规则,不要为了复用查询合并两个进程。
| SigNoz 字段 | 用途 |
|---|---|
service.name | 应用/进程边界 |
severity_text | error、warn、info、debug |
body.__log_message | 稳定日志消息,告警的主要匹配字段 |
body.* | role、name 等低基数 metadata |
category | LogTape category,目前不同 Cache/Runtime 尚未统一 |
error、完整 Redis URL、teamId、userId、sessionId、shareId、jobId、key 等字段只用于排查,不得用于通知分组或模板。
Runtime 与 BullMQ logger 当前通常继承 ['system'],业务 Cache 使用各自领域 category。category 统一前,以下规则默认不增加 category 条件,否则会漏掉 Runtime、BullMQ 和多数 Cache 日志。
| 参数 | 默认值 |
|---|---|
| Evaluation window | Rolling 5 分钟 |
| Evaluation frequency | 1 分钟 |
| No-data | No alert / OK |
| Match type | at least once |
| Repeat notification | P1 15 分钟;P2 60 分钟 |
| 推荐 Group By | body.__log_message、body.role、body.name、service.name |
发布、Redis 维护和故障演练使用 SigNoz maintenance window 或通知路由静默,不修改 Filter 绕过一次发布。
service.name = 'fastgpt-cn-client'
AND severity_text = 'error'
AND body.__log_message = 'Redis connection error'
count();Group By:body.role、service.name。>= 3。service.name = 'fastgpt-cn-client'
AND severity_text = 'error'
AND body.__log_message = 'Redis runtime close failed after process shutdown signal'
count();Group By:service.name。>= 1。service.name = 'fastgpt-cn-client'
AND severity_text = 'warn'
AND (
body.__log_message = 'Redis connection closed'
OR body.__log_message = 'Redis reconnect scheduled'
OR body.__log_message = 'Redis reconnect requested by command error'
)
count();Group By:body.role、service.name。>= 5;单条 close 不告警。service.name = 'fastgpt-cn-client'
AND severity_text = 'error'
AND (
body.__log_message = 'BullMQ queue error'
OR body.__log_message = 'BullMQ worker error'
OR body.__log_message = 'BullMQ worker restart failed, will retry'
)
count();Group By:body.name、service.name。>= 3。BullMQ worker closed, attempting restart
BullMQ worker resume failed
BullMQ queue close failed
BullMQ worker close failed
BullMQ queue connection forced disconnect failed
BullMQ worker connection forced disconnect failed
Failed to release Redis connection after BullMQ queue creation error
Failed to release Redis connection after BullMQ worker creation error
severity_text = 'warn',用 OR 匹配上述 body.__log_message。count();Group By:body.name、body.__log_message。>= 3;close/forced-disconnect failure 可单独设置 >= 1。Daily active dedupe failed open
DingTalk accessToken cache read failed
DingTalk accessToken cache write failed
Invalid Redis session record
Failed to delete invalid Redis session record
Redis lease renew failed
Redis lease acquire failed
Redis lease release failed
Failed to get team point cache
Failed to set team point cache
Failed to increment team point cache
Failed to clear team point cache
Workflow stop signal read failed open
Workflow stop signal clear failed
Failed to get team vector count cache
Failed to set team vector count cache
Failed to invalidate team vector count cache
severity_text IN ('error', 'warn'),用 OR 匹配上述消息。count();Group By:body.__log_message、service.name。>= 10;session 损坏或 lease acquire failure 可设 >= 3。Skipped invalid team point cache value 属于数据质量信号,不并入 Redis 可用性告警。
Failed to clear stream resume redis keys before mirror
Failed to mirror stream response to redis
Failed to shrink stream resume redis ttl
>= 5;恢复能力属于核心 SLA 时可低频通知单次失败。Disabling new stream resume mirrors due to Redis memory pressure
Failed to inspect Redis memory pressure for stream resume mirror
Failed to persist stream resume unavailable state
cleanStaleGeneratingChats: failed to inspect stream resume activity
>= 1/10 分钟;检查或状态写入失败 >= 3/5 分钟。service.name = 'fastgpt-cn-client'
AND severity_text = 'error'
AND (
body.__log_message = 'Fixed window rate limit failed closed'
OR body.__log_message = 'Team QPM configuration lookup failed closed'
OR body.__log_message = 'Team QPM rate limit failed closed'
)
count();Group By:body.__log_message、body.type。>= 1;高流量环境可使用 >= 3。service.name = 'fastgpt-cn-client'
AND severity_text = 'error'
AND (
body.__log_message = 'Failed to get WeChat Work pending order cache'
OR body.__log_message = 'Failed to set WeChat Work pending order cache'
OR body.__log_message = 'Failed to clean WeChat Work pending order cache'
)
count();Group By:body.__log_message、service.name。>= 1,只关注持续故障时使用 >= 3。这类错误不能单独证明 Redis 不可用,应与 R1/R4 分开配置:
Failed to push collection update job
Failed to update collection
Failed to check evaluation job status
Failed to remove evaluation job
Failed to enqueue skill creation job, marked skill creation failed
Failed to resume pending skill creation jobs
Failed to resume marked skill delete jobs
Reply job failed
Wechat getUpdates request failed
getUpdates API error
Schedule next poll (completed) failed
Schedule next poll (failed) failed
>= 3/5 分钟。以下信息只用于 dashboard 或趋势,不直接通知:
Redis connection established
Redis connection ready
Redis runtime closed after process shutdown signal
BullMQ worker ready
BullMQ worker restarted successfully
BullMQ worker paused
Collection update job pushed
Dataset sync scheduler reconcile finished
Redis memory pressure recovered; stream resume mirror creation resumed
幂等补偿、资源已不存在和 active job 无法删除等 warning 也属于业务 dashboard。只有它们与 R1/R4 或明确业务 SLA 同时满足时才升级。
基础设施 category 统一后,Redis Runtime/health/shutdown 使用 LogCategories.INFRA.REDIS,BullMQ Runtime 使用 LogCategories.INFRA.QUEUE;业务 Cache 保留领域 category,并额外提供低基数 component 字段。
在 SigNoz 中确认 category 的实际存储类型前,不批量修改现有规则。日志消息重命名必须同步更新对应规则;本文不维护一份与源码重复的全量消息清单。