aah icon indicating copy to clipboard operation
aah copied to clipboard

Add pluggable component for health check feature

Open jeevatkm opened this issue 5 years ago • 3 comments

The goal is to create a pluggable component for health check feature in aah.

Goals:

Design:

  • Create a go library
    • Repo: https://github.com/go-aah/ec-healthcheck-provider - created, ready to use
    • Go Vanity for release: aahframe.work/ec/healthcheck - yet to be done
  • Spec:
    • Provide an interface for implementing health check reporter
      • interface method func Check() error
    • Provide a method to create new health check component
    • Provide methods to add one or more health check reporter into health check registry with or without interval duration to call
      • e.g.: hc.AddReporter(healthcheck.Config{/* report name, implementation based on above interface, duration, skip on error, etc... */})
    • Provide a method to register controller and route for the aah application (by domain name if multiple domains application)
      • For non-Kubernetes - accept URL relative path for the route - returns the response payload with status code
      • For Kubernetes - to add liveness and readiness endpoints (accept URL relative path for the route for both endpoints) - return only status code with empty body since Kubernetes only cares about status code
  • Status Codes for response
    • 200 OK if every registered health checker/reporter returns nil
    • 503 Service Unavailable if any registered checker/reporter return non-nil except skip on error

Sample response payload (a conceptual idea, yet to be finalized)

{
	"status": "OK", // OK or Service Unavailable
	"timestamp": "RFC3339 or ISO 8061", // yet to be decided
	"reportname": bool, // true or false, this line will be repeated for all registered health checker/reporter
}

jeevatkm avatar Mar 30 '19 06:03 jeevatkm

@adrianlop welcome 😄

jeevatkm avatar Mar 30 '19 18:03 jeevatkm

I just pushed a basic PR here: https://github.com/go-aah/ec-healthcheck-provider/pull/1/files

let's discuss and review in there if you like! cheers @jeevatkm

adrianlop avatar Apr 01 '19 14:04 adrianlop

@adrianlop I have added Go vanity for aahframe.work/ec/health so available to use for try/test https://godoc.org/aahframe.work/ec/health

Until official release, please do go get aahframe.work/ec/health@master in your application to test/use it will update your go.mod with latest version of library every time you run it.

jeevatkm avatar Apr 03 '19 20:04 jeevatkm