后端巡检从哪开始:盯住错误率、延迟和队列积压
后端巡检从哪开始:盯住错误率、延迟和队列积压
巡检先盯趋势和可行动线索,不追求堆满阈值。Goroutine、磁盘与连接池都要结合服务历史基线解释,告警里还应附下一条只读排查命令。
建立最小巡检集
- 可用性:
/healthz、关键依赖的连通性、近期开关与发布记录。 - 资源:CPU、内存、磁盘 inode 与空间、文件描述符、网络错误。
- 饱和度:队列长度、连接池等待、goroutine 增长趋势、请求超时。
- 正确性:错误日志采样、关键业务指标与数据延迟。
func SafeHTTPGet(ctx context.Context, url string, timeout time.Duration) (int, error) { client := &http.Client{Timeout: timeout} req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { return 0, err } resp, err := client.Do(req) if err != nil { return 0, err } defer resp.Body.Close() return resp.StatusCode, nil }客户端超时和响应体关闭是基本资源管理,但它们不能替代服务端限流、连接池配置或调用链超时传播。
让告警可以行动
告警应说明指标、当前值、正常基线、影响范围和仪表盘链接。磁盘使用率高时,先检查增长最快的目录和日志轮转,不要自动删除未知文件;goroutine 增长时,抓取 goroutine profile 与请求特征;连接池等待上升时,检查慢查询和下游延迟。
巡检脚本应该以只读检查为主。涉及清理、重启或扩容的动作,需要明确范围、审批与回滚方案。