Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/talento90/go-health
:heart: Health check your applications and dependencies
https://github.com/talento90/go-health
golang health healthcheck monitor
Last synced: about 2 months ago
JSON representation
:heart: Health check your applications and dependencies
- Host: GitHub
- URL: https://github.com/talento90/go-health
- Owner: Talento90
- License: mit
- Created: 2018-02-13T18:40:54.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-01-19T10:53:34.000Z (almost 3 years ago)
- Last Synced: 2024-10-17T12:48:46.052Z (2 months ago)
- Topics: golang, health, healthcheck, monitor
- Language: Go
- Homepage:
- Size: 21.5 KB
- Stars: 97
- Watchers: 5
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# health
[![Build Status](https://travis-ci.org/Talento90/go-health.svg?branch=master)](https://travis-ci.org/Talento90/go-health) [![Go Report Card](https://goreportcard.com/badge/github.com/Talento90/go-health)](https://goreportcard.com/report/github.com/Talento90/go-health) [![codecov](https://codecov.io/gh/Talento90/go-health/branch/master/graph/badge.svg)](https://codecov.io/gh/Talento90/go-health)
[![GoDoc](https://godoc.org/github.com/Talento90/go-health?status.svg)](https://godoc.org/github.com/Talento90/go-health)Health package simplifies the way you add health check to your service.
For a real application using `go-health` please check [ImgArt](https://github.com/Talento90/imgart)
## Supported Features
- Service [health status](https://godoc.org/github.com/Talento90/go-health#Status)
- Graceful Shutdown Pattern
- Health check external dependencies
- HTTP Handler out of the box that returns the health status## Installation
```
go get -u github.com/Talento90/go-health
```## How to use
```go
// Create a new instance of Health
h := New("service-name", Options{CheckersTimeout: time.Second * 1})// Register external dependencies
h.RegisterChecker("redis", redisDb)
h.RegisterChecker("mongo", mongoDb)
h.RegisterChecker("external_api", api)// Get service health status
s := h.GetStatus()// Listen interrupt OS signals for graceful shutdown
var gracefulShutdown = make(chan os.Signal)signal.Notify(gracefulShutdown, syscall.SIGTERM)
signal.Notify(gracefulShutdown, syscall.SIGINT)go func() {
<-gracefulShutdown
h.Shutdown()// Close Databases gracefully
// Close HttpServer gracefully
}// if you have an http server you can register the default handler
// ServeHTTP return 503 (Service Unavailable) if service is shutting down
http.HandleFunc("/health", h.ServeHTTP)
```## Response Example
```json
{
"service":"imgart",
"up_time":"14m5.788341028s",
"start_time":"2018-03-11T17:02:33Z",
"memory":{
"current":{
"total_alloc":8359984,
"heap_alloc":2285896,
"rss":5767168
},
"initial":{
"total_alloc":7784792,
"heap_alloc":1754064,
"rss":5701632
},
"diff":{
"total_alloc":575192,
"heap_alloc":531832,
"rss":65536
}
},
"go_routines":21,
"is_shutting_down":false,
"health_checkers":{
"mongo":{
"status":"CHECKED",
"response_time":"573.813µs"
},
"redis":{
"status":"CHECKED",
"error":{
"Syscall":"getsockopt",
"Err":113
},
"response_time":"93.526014ms"
},
"external_api": {
"status":"TIMEOUT",
"response_time":"1.2s"
}
}
}
```