Documentation
¶
Index ¶
- Constants
- Variables
- func BaseExit(rc int)
- func CatchPanic()
- func DumpBenchmark()
- func DumpBenchmarkWhen(criteria bool)
- func Exit(rc int, output string, args ...interface{})
- func ExitError(err error)
- func HandleTimeout(timeout int)
- func InitBenchmark(message string)
- func RecordBenchmark(message string)
- func StatusText(status int) string
- type Benchmark
- type BenchmarkEvent
- type Config
Examples ¶
Constants ¶
const ( // OK means everything is fine OK = 0 // Warning means there is a problem the admin should review Warning = 1 // Critical means there is a problem that requires immediate action Critical = 2 // Unknown means the status can not be determined, probably due to an error or something missing Unknown = 3 )
Variables ¶
var AllowExit = true
AllowExit lets you disable the call to os.Exit() in ExitXxx() functions of this package.
This should be used carefully and most likely only for testing.
var PrintStack = true
PrintStack prints the error stack when recovering from a panic with CatchPanic()
Functions ¶
func CatchPanic ¶
func CatchPanic()
CatchPanic is a general function for defer, to capture any panic that occurred during runtime of a check
The function will recover from the condition and exit with a proper UNKNOWN status, while showing error and the call stack.
Example ¶
defer CatchPanic()
panic("something bad happened")
Output: UNKNOWN - Golang encountered a panic: something bad happened would exit with code 3
func DumpBenchmarkWhen ¶
func DumpBenchmarkWhen(criteria bool)
Dump the Benchmark when criteria is met, to be used with defer and a boolean variable
func Exit ¶
Exit prints the plugin output and exits the program
Example ¶
Exit(OK, "Everything is fine")
Output: OK - Everything is fine would exit with code 0
func ExitError ¶
func ExitError(err error)
ExitError exists with an Unknown state while reporting the error
TODO: more information about the error
Example ¶
err := fmt.Errorf("connection to %s has been timed out", "localhost:12345")
ExitError(err)
Output: UNKNOWN - connection to localhost:12345 has been timed out would exit with code 3
func HandleTimeout ¶
func HandleTimeout(timeout int)
Helper for a goroutine, to wait for signals and timeout, and exit with a proper code
func InitBenchmark ¶
func InitBenchmark(message string)
Initialize a Benchmark for the running program as static instance
Example ¶
noinspection GoBoolExpressions
debug := true /* flags.Debug */
if debug {
InitBenchmark("Start plugin")
defer DumpBenchmarkWhen(debug /* flags.Debug */)
}
time.Sleep(1 * time.Second)
RecordBenchmark("Connecting to service")
time.Sleep(2 * time.Second)
RecordBenchmark("Connection open")
func RecordBenchmark ¶
func RecordBenchmark(message string)
Recording timing and memory for the current program
func StatusText ¶
StatusText returns the string corresponding to a state
Example ¶
fmt.Println(StatusText(OK), StatusText(Warning), StatusText(Critical), StatusText(Unknown))
Output: OK WARNING CRITICAL UNKNOWN
Types ¶
type Benchmark ¶
type Benchmark struct {
Events []*BenchmarkEvent
}
Benchmark records multiple events and provides functionality to dump the recorded events
var ActiveBenchmark *Benchmark
func NewBenchmark ¶
NewBenchmark starts a new benchmark and records the message as event
Example ¶
bench := NewBenchmark("Start plugin")
defer bench.DumpWhen(true /* flags.Debug */)
time.Sleep(1 * time.Second)
bench.Record("Connecting to service")
time.Sleep(2 * time.Second)
bench.Record("Connection open")
type BenchmarkEvent ¶
type BenchmarkEvent struct {
Time *time.Time
Offset *time.Duration
Message string
TotalAlloc uint64
HeapAlloc uint64
}
BenchmarkEvent represents a single event during a benchmark with the time it occurred
type Config ¶
type Config struct {
Name string
Readme string
Version string
Timeout int
Verbose bool
Debug bool
PrintVersion bool
DefaultFlags bool
DefaultHelper bool
FlagSet *flag.FlagSet
}
Example ¶
config := NewConfig()
config.Name = "check_test"
config.Readme = `Test Plugin`
config.Version = "1.0.0"
_ = config.FlagSet.StringP("hostname", "H", "localhost", "Hostname to check")
os.Args = []string{"check_example", "--help"}
config.ParseArguments()
log.Info("test")
Output: Usage of check_test Test Plugin Arguments: -H, --hostname string Hostname to check (default "localhost") -t, --timeout int Abort the check after n seconds (default 30) -d, --debug Enable debug mode -v, --verbose Enable verbose mode -V, --version Print version and exit would exit with code 3
func (*Config) EnableTimeoutHandler ¶
func (c *Config) EnableTimeoutHandler()
Start the timeout and signal handler in a goroutine
func (*Config) ParseArguments ¶
func (c *Config) ParseArguments()
func (*Config) ParseArray ¶
func (*Config) SetupLogging ¶
func (c *Config) SetupLogging()