Skip to content

[gRPC][obs] RateLimit-deny / CircuitBreaker-open 专属 metric + 可归因日志 #2485

Description

@ghbvf

现状(证据 + 根因)

rate_limit.go deny 与 circuit_breaker.go 开路均无专属信号:deny→codes.ResourceExhausted、开路→codes.Unavailable,与 handler 自身返回的同 code 在 grpc_server_requests_total 上不可区分,限流/熔断场景 SLO 告警无法归因。

  • 代码根因:拦截器 deny/open 路径未 emit counter(也无 log)。
  • 架构根因:是否在 GRPCCollector 扩展 RecordRateLimit/RecordCircuitBreaker 或共享 grpc_protection_rejected_total{type,method,cell}——影响所有 collector 实现,需设计。

修复方向

  • minimal:deny/open 路径加 Debug/Warn 结构化日志(method/cell,IP key 注意 PII/采样)。
  • thorough:新增 grpc_protection_rejected_total{type=ratelimit|circuit, method, cell} 闭值集 label(与 HTTP CB metric 对称),archtest 锁 emit 路径。

Files

  • framework/runtime/grpc/interceptor/rate_limit.go:65-93
  • framework/runtime/grpc/interceptor/circuit_breaker.go:113-147

Source

PR #2479 review (运维 F3/F5)。Discovered via /ship #1155。

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-observabilityMetrics / Tracing / LoggingbacklogBacklog item — automation trigger 入 projectcx-2Cx2 改动量:同包 ≤5 文件pri-p3Priority P3type-feat新功能

    Projects

    • Status
      In review

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions