RRuna

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
编辑此页