Commit 6dc73a67 by Carl Bergquist Committed by GitHub

add /healthz endpoint (#27536)

kuberentes (and Im sure other orchastrators does as well) support two
kind of checks. readiness checks and liveness checks. Grafanas current
`/api/health` endpoint requires database access which might not
always be required for the instance to be considered active.
parent 20292bdb
...@@ -437,7 +437,8 @@ func (hs *HTTPServer) registerRoutes() { ...@@ -437,7 +437,8 @@ func (hs *HTTPServer) registerRoutes() {
r.Delete("/api/snapshots/:key", reqEditorRole, Wrap(DeleteDashboardSnapshot)) r.Delete("/api/snapshots/:key", reqEditorRole, Wrap(DeleteDashboardSnapshot))
// Health check // Health check
r.Get("/api/health", hs.healthHandler) r.Get("/api/health", hs.apiHealthHandler)
r.Get("/healthz", hs.healthzHandler)
r.Get("/*", reqSignedIn, hs.Index) r.Get("/*", reqSignedIn, hs.Index)
} }
...@@ -375,12 +375,19 @@ func (hs *HTTPServer) metricsEndpoint(ctx *macaron.Context) { ...@@ -375,12 +375,19 @@ func (hs *HTTPServer) metricsEndpoint(ctx *macaron.Context) {
ServeHTTP(ctx.Resp, ctx.Req.Request) ServeHTTP(ctx.Resp, ctx.Req.Request)
} }
func (hs *HTTPServer) healthHandler(ctx *macaron.Context) { // healthzHandler always return 200 - Ok if Grafana's web server is running
notHeadOrGet := ctx.Req.Method != http.MethodGet && ctx.Req.Method != http.MethodHead func (hs *HTTPServer) healthzHandler(ctx *macaron.Context) {
if notHeadOrGet || ctx.Req.URL.Path != "/api/health" { ctx.WriteHeader(200)
return _, err := ctx.Resp.Write([]byte("Ok"))
if err != nil {
hs.log.Error("could not write to response", "err", err)
} }
}
// apiHealthHandler will return ok if Grafana's web server is running and it
// can access the database. If the database cannot be access it will return
// http status code 503.
func (hs *HTTPServer) apiHealthHandler(ctx *macaron.Context) {
data := simplejson.New() data := simplejson.New()
data.Set("database", "ok") data.Set("database", "ok")
if !hs.Cfg.AnonymousHideVersion { if !hs.Cfg.AnonymousHideVersion {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment