Documentation
¶
Index ¶
- func WithCacheDuration(duration time.Duration) option
- func WithCheck(check Check) option
- func WithCustomStatusCodes(statusCodeUp int, statusCodeDown int) option
- func WithDisabledCache() option
- func WithDisabledDetails() option
- func WithManualStart() option
- func WithMaxErrorMessageLength(length uint) option
- func WithPeriodicCheck(refreshPeriod time.Duration, check Check) option
- func WithStatusListener(listener SystemStatusListener) option
- func WithTimeout(timeout time.Duration) option
- type Check
- type CheckResult
- type CheckState
- type CheckStatusListener
- type Handler
- type Status
- type SystemStatusListener
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WithCacheDuration ¶
WithCacheDuration sets the duration for how long the aggregated health check result will be cached. This is set to 1 second by default. Caching will prevent that each incoming HTTP request triggers a new health check. A duration of 0 will effectively disable the cache and has the same effect as WithDisabledCache.
func WithCheck ¶
func WithCheck(check Check) option
WithCheck adds a new health check that contributes to the overall service availability Status. This check will be triggered each time the health check HTTP endpoint is called (and the cache has expired, see WithCacheDuration). If health checks are expensive or you expect a lot of calls to the health endpoint, consider using WithPeriodicCheck instead.
func WithCustomStatusCodes ¶
WithCustomStatusCodes allows to set custom HTTP Status code for the case when the system is evaluated to be up or down (based on check results). Default values are statusCodeUp = 200 (OK) and statusCodeDown = 503 (Service Unavailable).
func WithDisabledCache ¶
func WithDisabledCache() option
WithDisabledCache disabled the check cache. This is not recommended in most cases. This will effectively lead to a health endpoint that initiates a new health check for each incoming HTTP request. This may have an impact on the systems that are being checked (especially if health checks are expensive). Caching also mitigates "denial of service" attacks.
func WithDisabledDetails ¶ added in v0.3.0
func WithDisabledDetails() option
WithDisabledDetails disables hides all data in the JSON response body but the the Status itself. Example: { "Status":"down" }
func WithManualStart ¶
func WithManualStart() option
WithManualStart prevents an automatic start of periodic checks (see NewHandler). If this configuration option is used and you want to start periodic checks yourself, you need to start them by using Start.
func WithMaxErrorMessageLength ¶
func WithMaxErrorMessageLength(length uint) option
WithMaxErrorMessageLength limits maximum number of characters in error messages.
func WithPeriodicCheck ¶
WithPeriodicCheck adds a new health check that contributes to the overall service availability Status. The health check will be performed on a fixed schedule and will not be executed for each HTTP request (as in contrast to WithCheck). This allows to process a much higher number of HTTP requests without actually calling the checked services too often or to execute long running checks. The health endpoint always returns the last result of the periodic check. When periodic checks are started (happens automatically if WithManualStart is not used) they are also executed for the first time. Until all periodic checks have not been executed at least once, the overall availability Status will be "unknown" with HTTP Status code 503 (Service Unavailable).
func WithStatusListener ¶ added in v0.3.0
func WithStatusListener(listener SystemStatusListener) option
WithStatusListener registers a handler function that will be called whenever the overall system health Status changes. Attention: Ideally, this method should be quick and not block for too long.
func WithTimeout ¶
WithTimeout globally defines a timeout duration for all checks. You can still override this timeout by using the timeout value in the Check configuration. Default value is 30 seconds.
Types ¶
type Check ¶
type Check struct {
// The Name must be unique among all checks. Name is a required attribute.
Name string
// Check is the check function that will be executed to check availability.
// This function must return an error if the checked service is considered
// not available. Check is a required attribute.
Check func(ctx context.Context) error
// Timeout will override the global timeout value, if it is smaller than
// the global timeout (see WithTimeout).
Timeout time.Duration
// FailureTolerance will set a duration for how long a service must be
// "in error" until it is considered unavailable.
FailureTolerance time.Duration
// FailureToleranceThreshold will set a maximum number of consecutive
// check fails until the service is considered unavailable.
FailureToleranceThreshold uint
// StatusListener allows to set a listener that will be called
// whenever the Status of the check changes.
StatusListener CheckStatusListener
// contains filtered or unexported fields
}
Check allows to configure health checks.
type CheckResult ¶ added in v0.4.0
type CheckState ¶ added in v0.3.0
type CheckStatusListener ¶ added in v0.3.0
type CheckStatusListener func(name string, state CheckState)
type Handler ¶
func NewHandler ¶ added in v0.2.0
func NewHandler(options ...option) Handler
NewHandler creates a new health check http.Handler. If periodic checks have been configured (see WithPeriodicCheck), they will be started as well (if not explicitly turned off using WithManualStart).
func (Handler) Start ¶
func (h Handler) Start()
Start allows to start periodic checks manually if the health check was configured using WithManualStart or when checks have been stopped earlier using health.Stop. This function has no effect otherwise.
func (Handler) Stop ¶
func (h Handler) Stop()
Stop stops all periodic checks. This function has only effect after automatic startup (i.e. when the handler was not configured using WithManualStart) or when peridic checks have been started before manually using Start. This function will have no effect otherwise. It is usually not necessary to call this function manually. Attention: This function does not block until all checks have been stopped!
type SystemStatusListener ¶ added in v0.3.0
type SystemStatusListener func(status Status, state map[string]CheckState)