Skip to content

efureev/health-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Health checker

Go Report Card GitHub go.mod Go version GitHub release (latest by date) GitHub

Installation

go get github.com/efureev/health-checker

Description

Health checker allows you check out various services and your custom processes for your custom checks (i.e. availability).

Usage

Create checker:

ch := checker.NewChecker().
SetLogger(logger.NewConsoleLogger()).

Add a command to healthcheck:

package main

import (
	checker "github.com/efureev/health-checker"
	"github.com/efureev/health-checker/checkers"
)

func main() {
	ch := checker.NewChecker().
		// SetLogger(logger.NewConsoleLogger()).
		AddCmd(
			checker.NewCmd(`Node`).SetCheckFn(checkers.CheckingNodeFn(`16`)),
			checker.NewCmd(`Redis`).SetCheckFn(
				checkers.CheckingRedisFn(checkers.RedisConfig{
					Host:     `localhost`,
					Password: ``,
					DB:       0,
					Port:     6379,
				}),
			),
		)

	// aSynchro
	err := ch.RunParallel()

	// synchro
	err := ch.Run()
}

Example

With Commander:

package main

import (
	commander "github.com/efureev/go-commander"
	checker "github.com/efureev/health-checker"
	"github.com/efureev/health-checker/checkers"
)

func main() {
	cnf := struct{}{}
	cmdr := commander.NewCommander().
		Add(
			cmdChecking(cnf),
			// ... 
		)

	cmdr.Run()

	if cmdr.HasError() {
		utils.Error(cmdr.commander.Error(), "\nErrors:\n")
	}
}

func cmdChecking(cnf any) *commander.Command {
	return commander.NewCommand(`checking`).
		OnRun(func(cmd *commander.Command) error {
			ch := checker.NewChecker().
				SetLogger(logger.NewConsoleLogger()).
				AddCmd(
					checkingPostgresDb(cnf.Checker.Database),
					checkingElasticsearch(cnf.Checker.Elasticsearch),
					checkingRedis(cnf.Checker.Redis),
					checkingRabbitMQ(cnf.Checker.Rabbit),
					checkingCaptcha(cnf.Checker.Captcha),
					checkingTargetRepos(cnf.Targets),
					checkingHDD(cnf.Folder),
					checkingNode(),
				)
			return ch.RunParallel()
		})
}