# README

Health 💊

Este paquete permite evaluar y determinar el estado de salud de nuestra aplicación.

HealthCheckers disponibles

Por el momento, disponemos de 4 HealthCheckers:

  • IBM MQ
  • MS SQL
  • MySQL
  • Redis

En la siguiente tabla se pueden observar las variables de entorno necesarias para evaluar el correspondiente estado de cada una:

HealthCheckerVariable/s de entorno
IBM MQHTTP_MQ_API_URL
MS SQLSQL_CONNECTION
MySQLMYSQL_CONNECTION
RedisREDIS_DB, REDIS_ADDR y REDIS_PASS

Manos a la obra! 👨‍💻👩‍💻

Para agregar los Checkers que se quieran monitorear, alcanza con agregarlos en la función AddHealth del WebServer

import (
	"github.com/architecture-it/go-platform/health"
	"github.com/architecture-it/go-platform/web"
)

func main() {
	server := web.NewServer(web.ReadConfigFromEnv())
	server.AddHealth(health.IbmMQHealthChecker, health.MssqlHealthChecker, health.MysqlHealthChecker, health.RedisHealthChecker)
	api.SetupRouter(server.GetRouter())
	server.ListenAndServe()
}

El código anterior dispondrá en el endpoint /health una salida similar a la siguiente:

{
	"status": {
		"code": "UP",
		"description": "AlwaysUpEndpoint"
	},
	"details": {
		"ibmQueueHealthIndicator": {
			"status": {
				"code": "UP",
				"description": ""
			},
			"details": ""
		},
		"mysqlHealthIndicator": {
			"status": {
				"code": "UP",
				"description": ""
			},
			"details": {
				"hostname": "localhost",
				"version": "10.0.29-MariaDB-0ubuntu0.16.04.1"
			}
		},
		"redisHealthIndicator": {
			"status": {
				"code": "UP",
				"description": ""
			},
			"details": {
				"address": "127.0.0.1:6379",
				"totalMemory": "3.70G",
				"usedMemory": "1.62G",
				"version": "3.2.3"
			}
		},
		"sqlServerHealthIndicator": {
			"status": {
				"code": "UP",
				"description": ""
			},
			"details": {
				"host": "localhost",
				"version": "15.00.2000"
			}
		}
	}
}