health

package
v1.9.4-rc.5 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2022 License: BSD-3-Clause Imports: 14 Imported by: 24

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewGetAndPostHandler

func NewGetAndPostHandler(log logging.Logger, reporter Reporter) (http.Handler, error)

NewGetAndPostHandler returns a health handler that supports GET and jsonrpc POST requests.

func NewGetHandler

func NewGetHandler(reporter func() (map[string]Result, bool)) http.Handler

NewGetHandler return a health handler that supports GET requests reporting the result of the provided [reporter].

Types

type APIHealthReply

type APIHealthReply struct {
	Checks  map[string]Result `json:"checks"`
	Healthy bool              `json:"healthy"`
}

APIHealthReply is the response for Health

type Checker

type Checker interface {
	// HealthCheck returns health check results and, if not healthy, a non-nil
	// error
	//
	// It is expected that the results are json marshallable.
	HealthCheck(context.Context) (interface{}, error)
}

Checker can have its health checked

type CheckerFunc

type CheckerFunc func(context.Context) (interface{}, error)

func (CheckerFunc) HealthCheck

func (f CheckerFunc) HealthCheck(ctx context.Context) (interface{}, error)

type Client

type Client interface {
	// Readiness returns if the node has finished initialization
	Readiness(context.Context, ...rpc.Option) (*APIHealthReply, error)
	// Health returns a summation of the health of the node
	Health(context.Context, ...rpc.Option) (*APIHealthReply, error)
	// Liveness returns if the node is in need of a restart
	Liveness(context.Context, ...rpc.Option) (*APIHealthReply, error)
	// AwaitHealthy queries the Health endpoint with a pause of [interval]
	// in between checks and returns early if Health returns healthy
	AwaitHealthy(ctx context.Context, freq time.Duration, options ...rpc.Option) (bool, error)
}

Client interface for Avalanche Health API Endpoint

func NewClient

func NewClient(uri string) Client

NewClient returns a client to interact with Health API endpoint

type Health

type Health interface {
	Registerer
	Reporter

	Start(ctx context.Context, freq time.Duration)
	Stop()
}

Health defines the full health service interface for registering, reporting and refreshing health checks.

func New

func New(log logging.Logger, registerer prometheus.Registerer) (Health, error)

type Registerer

type Registerer interface {
	RegisterReadinessCheck(name string, checker Checker) error
	RegisterHealthCheck(name string, checker Checker) error
	RegisterLivenessCheck(name string, checker Checker) error
}

Registerer defines how to register new components to check the health of.

type Reporter

type Reporter interface {
	Readiness() (map[string]Result, bool)
	Health() (map[string]Result, bool)
	Liveness() (map[string]Result, bool)
}

Reporter returns the current health status.

type Result

type Result struct {
	// Details of the HealthCheck.
	Details interface{} `json:"message,omitempty"`

	// Error is the string representation of the error returned by the failing
	// HealthCheck. The value is nil if the check passed.
	Error *string `json:"error,omitempty"`

	// Timestamp of the last HealthCheck.
	Timestamp time.Time `json:"timestamp,omitempty"`

	// Duration is the amount of time this HealthCheck last took to evaluate.
	Duration time.Duration `json:"duration"`

	// ContiguousFailures the HealthCheck has returned.
	ContiguousFailures int64 `json:"contiguousFailures,omitempty"`

	// TimeOfFirstFailure of the HealthCheck,
	TimeOfFirstFailure *time.Time `json:"timeOfFirstFailure,omitempty"`
}

type Service

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

func (*Service) Health

func (s *Service) Health(_ *http.Request, _ *struct{}, reply *APIHealthReply) error

Health returns a summation of the health of the node

func (*Service) Liveness

func (s *Service) Liveness(_ *http.Request, _ *struct{}, reply *APIHealthReply) error

Liveness returns if the node is in need of a restart

func (*Service) Readiness

func (s *Service) Readiness(_ *http.Request, _ *struct{}, reply *APIHealthReply) error

Readiness returns if the node has finished initialization

Jump to

Keyboard shortcuts

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