跳至主要内容
版本:v2.x

健康检查

适用于 Fiber 的健康检查和就绪探测中间件,它提供了两个端点来检查 HTTP 应用程序的健康和就绪状态。

概述

  • 健康探测:检查服务器是否启动并运行。

    • 默认端点/livez
    • 行为:当服务器运行时,默认立即返回 true
  • 就绪探测:评估应用程序是否准备好处理请求。

    • 默认端点/readyz
    • 行为:当服务器运行时,默认立即返回 true
  • HTTP 状态码:

    • 200 OK:当检查器函数评估为 true 时返回。
    • 503 服务不可用:当检查器函数评估为 false 时返回。

签名

func New(config Config) fiber.Handler

示例

导入 Fiber Web 框架中包含的中介软件包

import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/healthcheck"
)

在启动 Fiber 应用后,可以使用以下可能性

// Provide a minimal config
app.Use(healthcheck.New())

// Or extend your config for customization
app.Use(healthcheck.New(healthcheck.Config{
LivenessProbe: func(c *fiber.Ctx) bool {
return true
},
LivenessEndpoint: "/live",
ReadinessProbe: func(c *fiber.Ctx) bool {
return serviceA.Ready() && serviceB.Ready() && ...
},
ReadinessEndpoint: "/ready",
}))

配置

type Config struct {
// Next defines a function to skip this middleware when returned true.
//
// Optional. Default: nil
Next func(c *fiber.Ctx) bool

// Function used for checking the liveness of the application. Returns true if the application
// is running and false if it is not. The liveness probe is typically used to indicate if
// the application is in a state where it can handle requests (e.g., the server is up and running).
//
// Optional. Default: func(c *fiber.Ctx) bool { return true }
LivenessProbe HealthChecker

// HTTP endpoint at which the liveness probe will be available.
//
// Optional. Default: "/livez"
LivenessEndpoint string

// Function used for checking the readiness of the application. Returns true if the application
// is ready to process requests and false otherwise. The readiness probe typically checks if all necessary
// services, databases, and other dependencies are available for the application to function correctly.
//
// Optional. Default: func(c *fiber.Ctx) bool { return true }
ReadinessProbe HealthChecker

// HTTP endpoint at which the readiness probe will be available.
// Optional. Default: "/readyz"
ReadinessEndpoint string
}

默认配置

此中介软件使用的默认配置定义如下

func defaultLivenessProbe(*fiber.Ctx) bool { return true }

func defaultReadinessProbe(*fiber.Ctx) bool { return true }

var ConfigDefault = Config{
LivenessProbe: defaultLivenessProbe,
ReadinessProbe: defaultReadinessProbe,
LivenessEndpoint: "/livez",
ReadinessEndpoint: "/readyz",
}