health

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 25, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package health 提供组件化的健康探针能力。

服务可在 HTTP server 构建时按需引入 /healthz (liveness) 和 /readyz (readiness) 端点。 Liveness 始终返回 200(进程存活即可),Readiness 执行所有注册的 Checker。

使用示例:

h := health.NewHandler(
    health.PingChecker("redis", redisClient),
    health.PingChecker("db", db),
)
srv := http.NewServer(http.WithHealthCheck(h))

Index

Constants

View Source
const (
	// DefaultCheckTimeout 是 readiness checker 的默认执行超时时间。
	DefaultCheckTimeout = 3 * time.Second
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

Builder 用于构建 Handler,支持链式调用注册 checker。

func NewBuilder

func NewBuilder() *Builder

NewBuilder 创建 Builder 实例。

func (*Builder) Build

func (b *Builder) Build() *Handler

Build 构建 Handler。

func (*Builder) WithChecker

func (b *Builder) WithChecker(checker Checker) *Builder

WithChecker 注册自定义 Checker。

func (*Builder) WithDBChecker

func (b *Builder) WithDBChecker(name string, db *sql.DB) *Builder

WithDBChecker 注册 *sql.DB 健康检查(使用 PingContext)。

func (*Builder) WithFuncChecker

func (b *Builder) WithFuncChecker(name string, checkFunc func(context.Context) error) *Builder

WithFuncChecker 注册基于函数的 Checker。

func (*Builder) WithRedisChecker

func (b *Builder) WithRedisChecker(name string, pinger Pinger) *Builder

WithRedisChecker 注册 Redis 健康检查。

type Checker

type Checker interface {
	// Name 返回检查项名称,用于响应体中的 key。
	Name() string
	// Check 执行健康检查。返回 nil 表示健康,返回 error 表示不健康。
	Check(ctx context.Context) error
}

Checker 定义健康检查接口。

func PingChecker

func PingChecker(name string, pinger Pinger) Checker

PingChecker 创建基于 Ping 方法的 Checker。 兼容 redis.Client、sql.DB 等实现了 Ping(ctx) error 的类型。

type DefaultDeps

type DefaultDeps struct {
	Redis Pinger
	DB    *sql.DB
}

DefaultDeps 定义默认健康检查的依赖项。

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler 管理健康探针端点。

func NewHandler

func NewHandler(checkers ...Checker) *Handler

NewHandler 创建健康探针 Handler。 checkers 为可选参数,用于 readiness 检查。

func NewHandlerWithDefaults

func NewHandlerWithDefaults(deps DefaultDeps) *Handler

NewHandlerWithDefaults 使用默认依赖创建 Handler。 自动注册所有非 nil 的依赖项为 checker。

func (*Handler) LivenessHandler

func (h *Handler) LivenessHandler() http.HandlerFunc

LivenessHandler 返回 liveness 探针的 http.HandlerFunc。 始终返回 HTTP 200,不执行任何 checker。

func (*Handler) ReadinessHandler

func (h *Handler) ReadinessHandler() http.HandlerFunc

ReadinessHandler 返回 readiness 探针的 http.HandlerFunc。 执行所有注册的 checker,全部通过返回 200,任一失败返回 503。

type Pinger

type Pinger interface {
	Ping(ctx context.Context) error
}

Pinger 定义 Ping 方法接口,兼容 redis.Client 和 sql.DB。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL