Healthcheck 中间件
快速提供健康检查响应,不进入业务 handler
middleware/healthcheck 用来给负载均衡、容器编排或进程守护提供简单健康检查。命中指定路径时,中间件会直接返回文本响应,不继续进入后续路由。
安装
go get github.com/duxweb/runa/middleware
基本用法
import "github.com/duxweb/runa/middleware/healthcheck"
route.Default().Use(healthcheck.New())
默认 /health 返回 200 ok
自定义路径
route.Default().Use(healthcheck.New(healthcheck.Config{
Path: "/healthz",
Status: 200,
Message: "ok",
}))
配置项
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Next |
func(*route.Context) bool |
nil |
返回 true 时跳过 |
Path |
string |
/health |
健康检查路径 |
Status |
int |
200 |
响应状态码 |
Message |
string |
ok |
响应文本 |
和 observe 的区别
healthcheck 很轻,只返回固定文本,适合最简单的活性检查。
observe 更偏运维观测,通常会提供更完整的健康、就绪、指标等端点。如果你已经使用 observe 暴露 /health 和 /ready,一般不需要再使用 healthcheck 中间件。
跳过访问日志
健康检查通常频率很高,建议配合 logger 跳过:
route.Default().Use(logger.New(logger.Config{
SkipPaths: []string{"/health"},
}))
route.Default().Use(healthcheck.New())
常见问题
- healthcheck 不检查数据库、缓存等外部依赖,只返回固定结果
- 如果要做就绪检查,可以自己写 handler 或使用 observe
- 如果应用在
/api分组下,不建议把 healthcheck 也挂在/api/health,基础设施通常更容易配置根路径/health