Documentation ¶
Index ¶
- Constants
- Variables
- func BaseExit(rc int)
- func BoundaryToString(value float64) (s string)
- func CatchPanic()
- func ExitError(err error)
- func ExitRaw(rc int, output ...string)
- func Exitf(rc int, output string, args ...interface{})
- func FormatFloat(value float64) string
- func HandleTimeout(timeout int)
- func LoadFromEnv(config interface{})
- func StatusText(status int) string
- type Config
- type Threshold
Examples ¶
Constants ¶
const ( // OK means everything is fine OK = 0 OKString = "OK" // Warning means there is a problem the admin should review Warning = 1 WarningString = "WARNING" // Critical means there is a problem that requires immediate action Critical = 2 CriticalString = "CRITICAL" // Unknown means the status can not be determined, probably due to an error or something missing Unknown = 3 UnknownString = "UNKNOWN" )
Variables ¶
var ( PosInf = math.Inf(1) NegInf = math.Inf(-1) )
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 BaseExit ¶
func BaseExit(rc int)
BaseExit exits the process with a given return code.
Can be controlled with the global AllowExit
func BoundaryToString ¶
BoundaryToString returns the string representation of a Threshold boundary.
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 ExitError ¶
func ExitError(err error)
ExitError exists with an Unknown state while reporting 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 (*errors.errorString) would exit with code 3
func ExitRaw ¶ added in v0.2.0
ExitRaw prints the plugin output with the state prefixed and exits the program.
Example:
OK - everything is fine
Example ¶
ExitRaw(OK, "Everything is fine")
Output: [OK] - Everything is fine would exit with code 0
func Exitf ¶ added in v0.2.0
Exitf prints the plugin output using formatting and exits the program.
Output is the formatting string, and the rest of the arguments help adding values.
Also see fmt package: https://golang.org/pkg/fmt
Example ¶
Exitf(OK, "Everything is fine - value=%d", 42)
Output: [OK] - Everything is fine - value=42 would exit with code 0
func FormatFloat ¶ added in v0.3.0
FormatFloat returns a string representation of floats, avoiding scientific notation and removes trailing zeros.
func HandleTimeout ¶
func HandleTimeout(timeout int)
Helper for a goroutine, to wait for signals and timeout, and exit with a proper code
func LoadFromEnv ¶ added in v0.6.0
func LoadFromEnv(config interface{})
LoadFromEnv can be used to load struct values from 'env' tags. Mainly used to avoid passing secrets via the CLI
type Config struct { Token string `env:"BEARER_TOKEN"` }
func StatusText ¶
StatusText returns the string corresponding to a state
Types ¶
type Config ¶
type Config struct { // Name of the monitoring plugin Name string // README represents the help text for the CLI usage Readme string // Output for the --version flag Version string // Default for the --timeout flag Timeout int // Default for the --verbose flag Verbose bool // Default for the --debug flag Debug bool // Enable predefined --version output PrintVersion bool // Enable predefined default flags for the monitoring plugin DefaultFlags bool // Enable predefined default functions (e.g. Timeout handler) for the monitoring plugin DefaultHelper bool // Additional CLI flags for the monitoring plugin FlagSet *flag.FlagSet }
Config represents a configuration for a monitoring plugin's CLI
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") config.ParseArguments() // Some checking should be done here Exitf(OK, "Everything is fine - answer=%d", 42)
Output: [OK] - Everything is fine - answer=42 would exit with code 0
func (*Config) EnableTimeoutHandler ¶
func (c *Config) EnableTimeoutHandler()
Start the timeout and signal handler in a goroutine
func (*Config) ParseArguments ¶
func (c *Config) ParseArguments()
ParseArguments parses the command line arguments given by os.Args
func (*Config) ParseArray ¶
ParseArray parses a list of command line arguments
type Threshold ¶
Defining a threshold for any numeric value
Format: [@]start:end
Threshold Generate an alert if x... 10 < 0 or > 10, (outside the range of {0 .. 10}) 10: < 10, (outside {10 .. ∞}) ~:10 > 10, (outside the range of {-∞ .. 10}) 10:20 < 10 or > 20, (outside the range of {10 .. 20}) @10:20 ≥ 10 and ≤ 20, (inside the range of {10 .. 20})
Reference: https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT
func (Threshold) DoesViolate ¶
Compares a value against the threshold, and returns true if the value violates the threshold.