跳转到内容

实时通信日志

实时通信层基于 Centrifuge 实现 WebSocket 双向通信,所有客户端交互通过 RPC Handler 处理。这些日志覆盖连接管理、RPC 调用链路和 HTTP 请求。

事件触发时机关键字段
[Centrifuge] OnConnecting started客户端发起连接client_id, transport
[Centrifuge] OnConnecting succeeded连接认证成功client_id, user_id
[Centrifuge] JWT verification failed, rejecting connectionJWT 验证失败client_id, error
[Centrifuge] OnConnect started连接建立client_id
[Centrifuge] client connected客户端连接就绪client_id, user_id
[Centrifuge] OnConnect panic连接处理异常panic, stack
CheckOrigin: origin allowedCORS 检查通过origin
CheckOrigin: origin NOT allowedCORS 检查拒绝origin
事件触发时机关键字段
[RPC] ->RPC 请求接收method, user, device
[RPC] <- okRPC 响应成功method, elapsed
[RPC] <- errRPC 响应失败method, error, elapsed
[RPC] marshal response failedRPC 响应序列化失败method, error
RPC handler returned non-API errorRPC 处理器返回非预期错误method, error
事件触发时机关键字段
HTTP request请求成功(2xx/3xx)method, path, status, duration, trace_id
HTTP request client error客户端错误(4xx)method, path, status, duration, trace_id, error_response
HTTP request failed服务端错误(5xx)method, path, status, duration, trace_id, error_response
WebSocket upgrade request completedWebSocket 升级请求method, path, duration, trace_id
事件触发时机关键字段
Readyz: DB check failed数据库健康检查失败error
Readyz: Redis check failedRedis 健康检查失败error
Readyz: Centrifuge check failedCentrifuge 健康检查失败error
Readyz check failed整体健康检查失败checks
事件触发时机关键字段
authorization_code authentication succeededOAuth2 登录成功provider, user_id
refresh_token refresh succeededToken 刷新成功user_id
ExchangeCode failed授权码交换失败provider, error
findOrCreateUser: concurrent create detected并发创建用户冲突(已自动处理)provider, external_id
事件说明
pubsub message missing meta/data separatorPubSub 消息格式异常
pubsub message invalid meta format元数据解析失败
failed to handle publication for channel消息处理失败
failed to handle join for channelJoin 事件处理失败
failed to handle leave for channelLeave 事件处理失败
事件触发时机关键字段
[UpdatePublisher] published update更新推送成功channel, update_type
[UpdatePublisher] push failed推送失败(数据已提交)error
[UpdatePublisher] publish to centrifuge failedCentrifuge 发布失败error
[UpdatePublisher] saved user_updates用户更新持久化count
{service="server"} | json | msg=~"\\[Centrifuge\\] (OnConnecting|OnConnect|client connected|JWT verification failed)"
{service="server"} | json client_id="client_id" | msg=~"\\[Centrifuge\\]" | client_id="client-xyz"
{service="server"} | json | msg="[Centrifuge] JWT verification failed, rejecting connection"
topk(10, count by (user_id) ({service="server"} | json user_id="user_id" | msg="[Centrifuge] client connected"))
{service="server"} | json method="method" | msg=~"\\[RPC\\] (->|<-)" | method="SendMessage"
{service="server"} | json elapsed="elapsed", method="method" | msg="[RPC] <- ok"
{service="server"} | json method="method", error="error" | msg="[RPC] <- err"
topk(10,
count by (method) ({service="server"} | json method="method" | msg="[RPC] <- err")
/
count by (method) ({service="server"} | json method="method" | msg=~"\\[RPC\\] <- (ok|err)")
)
{service="server"} | json elapsed="elapsed" | msg="[RPC] <- ok" | elapsed > 1000
{service="server"} | json | msg="HTTP request failed"
{service="server"} | json path="path" | msg=~"HTTP request" | path=~"/api/.*"
{service="server"} | json duration="duration" | msg="HTTP request"
sum by (path) (count_over_time({service="server"} | json path="path" | msg="HTTP request"[1m]))
{service="server"} | json | msg=~"Readyz.*failed"
{service="server"} | json | msg=~"(authorization_code|refresh_token).*succeeded"
{service="server"} | json | msg=~"(ExchangeCode|failed to).*(failed|error)"
{service="server"} | json | msg=~"\\[UpdatePublisher\\].*failed"
{service="server"} | msg=~"pubsub message|failed to handle (publication|join|leave)"
{service="server"} | json origin="origin" | msg="CheckOrigin: origin NOT allowed"

HTTP 日志自动包含 trace_id,可与 Tempo 联动:

{service="server"} | json trace_id="trace_id", path="path" | msg="HTTP request failed" | trace_id="abc123"

HTTP 相关指标通过中间件自动暴露(标准 Go HTTP metrics)。

# HTTP 请求速率(按状态码)
sum by (status) (rate(http_requests_total[5m]))
# HTTP 请求延迟 P95
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
告警条件说明
HTTP 5xx 率过高5xx 请求占比 > 1%服务端异常
RPC 错误率过高RPC 错误率 > 5%RPC 处理器异常
健康检查失败Readyz check failed 持续出现依赖服务不可用
WebSocket 认证失败率高JWT 验证失败率 > 10%可能遭遇攻击或 Token 过期