MR5356 / health

An easy-to-use service status monitoring library in Golang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Go Health Check

go-test go-report


An easy-to-use service status monitoring library in Golang


Installation

go get github.com/MR5356/health

Example

URL Check

package main

import (
	"fmt"
	"github.com/MR5356/health/url"
)

func main() {
	checker := url.NewChecker("https://toodo.fun")

	result := checker.Check()
	fmt.Printf("status: %s\nrtt: %dms\nresult: %+v\n", result.Status, result.GetRTT(), result.GetResult())
}

Output:

status: up
rtt: 160ms
result: &{Code:200 Error:<nil>}

Host Check

package main

import (
	"fmt"
	"github.com/MR5356/health/host"
)

func main() {
	// use ping checker
	pingChecker := host.NewPingChecker("baidu.com")
	result := pingChecker.Check()
	fmt.Printf("status: %s\nrtt: %dms\nresult: %+v\n", result.Status, result.GetRTT(), result.GetResult())

	// use ssh checker
	sshChecker := host.NewSSHChecker(&host.HostInfo{
		Host:     "host or ip",
		Port:     22,
		Username: "username",
		Password: "password",
	})
	result = sshChecker.Check()
	fmt.Printf("status: %s\nrtt: %dms\nresult: %+v\n", result.Status, result.GetRTT(), result.GetResult())
}

Output:

status: up
rtt: 9ms
result: &{Addr:39.156.66.10 Error:<nil>}
status: up
rtt: 295ms
result: <nil>

Database Check

package main

import (
	"fmt"
	"github.com/MR5356/health/database"
)

func main() {
	checker := database.NewChecker(database.DBDriverSQLite, "file::memory:?cache=shared")
	result := checker.Check()
	fmt.Printf("status: %s\nrtt: %dms\nresult: %+v\n", result.Status, result.GetRTT(), result.GetResult())
}

Output:

status: up
rtt: 1ms
result: &{Version:3.45.1 Error:<nil>}

Testing

go test -v ./... -coverprofile=coverage.out
go tool cover -func=coverage.out 

Implementing custom checker

type Checker interface {
	Check() Health
}

Support

If you have questions, reach out to us one way or another.

About

An easy-to-use service status monitoring library in Golang

License:MIT License


Languages

Language:Go 98.3%Language:Makefile 1.7%