gatus/vendor/github.com/TwinProduction/health
2021-02-12 23:29:21 -05:00
..
.gitattributes Use TwinProduction/health for health endpoint 2021-02-12 23:29:21 -05:00
.gitignore Use TwinProduction/health for health endpoint 2021-02-12 23:29:21 -05:00
go.mod Use TwinProduction/health for health endpoint 2021-02-12 23:29:21 -05:00
health.go Use TwinProduction/health for health endpoint 2021-02-12 23:29:21 -05:00
README.md Use TwinProduction/health for health endpoint 2021-02-12 23:29:21 -05:00
status.go Use TwinProduction/health for health endpoint 2021-02-12 23:29:21 -05:00

health

build Go Report Card codecov Go version Go Reference

Health is a library used for creating a very simple health endpoint.

While implementing a health endpoint is very simple, I've grown tired of implementing it over and over again.

Installation

go get -u github.com/TwinProduction/health

Usage

To retrieve the handler, you must use health.Handler() and are expected to pass it to the router like so:

router := http.NewServeMux()
router.Handle("/health", health.Handler())
server := &http.Server{
	Addr:    ":8080",
	Handler: router,
}

By default, the handler will return UP when the status is down, and DOWN when the status is down. If you prefer using JSON, however, you may initialize the health handler like so:

router.Handle("/health", health.Handler().WithJSON(true))

The above will cause the response body to become {"status":"UP"} and {"status":"DOWN"} for both status respectively.

To change the health of the application, you can use health.SetStatus(<status>) where <status> is one health.Up or health.Down:

health.SetStatus(health.Up)
health.SetStatus(health.Down)

Complete example

package main

import (
	"net/http"
	"time"

	"github.com/TwinProduction/health"
)

func main() {
	router := http.NewServeMux()
	router.Handle("/health", health.Handler())
	server := &http.Server{
		Addr:         "0.0.0.0:8080",
		Handler:      router,
		ReadTimeout:  15 * time.Second,
		WriteTimeout: 15 * time.Second,
		IdleTimeout:  15 * time.Second,
	}
	server.ListenAndServe()
}