...

Package healthx

import "github.com/ory/x/healthx"
Overview
Index

Overview ▾

Package healthx providers helpers for returning health status information via HTTP.

Constants

const (
    // AliveCheckPath is the path where information about the life state of the instance is provided.
    AliveCheckPath = "/health/alive"
    // ReadyCheckPath is the path where information about the rady state of the instance is provided.
    ReadyCheckPath = "/health/ready"
    // VersionPath is the path where information about the software version of the instance is provided.
    VersionPath = "/version"
)

func NoopReadyChecker

func NoopReadyChecker() error

NoopReadyChecker is always ready.

func RoutesToObserve

func RoutesToObserve() []string

RoutesToObserve returns a string of all the available routes of this module.

type Handler

Handler handles HTTP requests to health and version endpoints.

type Handler struct {
    H             herodot.Writer
    VersionString string
    ReadyChecks   ReadyCheckers
}

func NewHandler

func NewHandler(
    h herodot.Writer,
    version string,
    readyChecks ReadyCheckers,
) *Handler

NewHandler instantiates a handler.

func (*Handler) Alive

func (h *Handler) Alive(rw http.ResponseWriter, r *http.Request, _ httprouter.Params)

Alive returns an ok status if the instance is ready to handle HTTP requests.

swagger:route GET /health/alive health isInstanceAlive

Check alive status

This endpoint returns a 200 status code when the HTTP server is up running. This status does currently not include checks whether the database connection is working.

If the service supports TLS Edge Termination, this endpoint does not require the `X-Forwarded-Proto` header to be set.

Be aware that if you are running multiple nodes of this service, the health status will never refer to the cluster state, only to a single instance.

Produces:
- application/json

Responses:
  200: healthStatus
  500: genericError

func (*Handler) Ready

func (h *Handler) Ready(shareErrors bool) httprouter.Handle

Ready returns an ok status if the instance is ready to handle HTTP requests and all ReadyCheckers are ok.

swagger:route GET /health/ready health isInstanceReady

Check readiness status

This endpoint returns a 200 status code when the HTTP server is up running and the environment dependencies (e.g. the database) are responsive as well.

If the service supports TLS Edge Termination, this endpoint does not require the `X-Forwarded-Proto` header to be set.

Be aware that if you are running multiple nodes of this service, the health status will never refer to the cluster state, only to a single instance.

Produces:
- application/json

Responses:
  200: healthStatus
  503: healthNotReadyStatus

func (*Handler) SetHealthRoutes

func (h *Handler) SetHealthRoutes(r *httprouter.Router, shareErrors bool)

SetHealthRoutes registers this handler's routes for health checking.

func (*Handler) SetVersionRoutes

func (h *Handler) SetVersionRoutes(r *httprouter.Router)

SetHealthRoutes registers this handler's routes for health checking.

func (*Handler) Version

func (h *Handler) Version(rw http.ResponseWriter, r *http.Request, _ httprouter.Params)

Version returns this service's versions.

swagger:route GET /version version getVersion

Get service version

This endpoint returns the service version typically notated using semantic versioning.

If the service supports TLS Edge Termination, this endpoint does not require the `X-Forwarded-Proto` header to be set.

Be aware that if you are running multiple nodes of this service, the health status will never refer to the cluster state, only to a single instance.

    Produces:
    - application/json

	   Responses:
			200: version

type ReadyChecker

ReadyChecker should return an error if the component is not ready yet.

type ReadyChecker func(r *http.Request) error

type ReadyCheckers

ReadyCheckers is a map of ReadyCheckers.

type ReadyCheckers map[string]ReadyChecker