An easy-to-use service status monitoring library in Golang
go get github.com/MR5356/health
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>}
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>
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>}
go test -v ./... -coverprofile=coverage.out
go tool cover -func=coverage.out
type Checker interface {
Check() Health
}
If you have questions, reach out to us one way or another.