Documentation
¶
Index ¶
- Constants
- Variables
- func BaseExit(rc Status)
- func BoundaryToString(value float64) string
- func CatchPanic()
- func Compare(a Status, b Status) int
- func Exit(rc Status, output ...string)
- func ExitError(err error)
- func ExitWithPerfdata(rc Status, perfdata PerfdataList, output ...string)
- func FormatFloat(value float64) string
- func HandleTimeout(timeout int)
- func LoadFromEnv(config any)
- type Config
- type Perfdata
- type PerfdataList
- type Status
- type Threshold
Examples ¶
Constants ¶
const ( // OKString means everything is fine OKString = "OK" // WarningString means there is a problem the admin should review WarningString = "WARNING" // CriticalString means there is a problem that requires immediate action CriticalString = "CRITICAL" // UnknownString means the status can not be determined, probably due to an error or something missing UnknownString = "UNKNOWN" )
const ( NegativeInfinitySymbol = "~" RangeSeparatorSymbol = ":" RangeStartSymbol = "@" )
const PerfdataSeparatorSymbol = "|"
Variables ¶
var ( PosInf = math.Inf(1) NegInf = math.Inf(-1) )
var AllowExit = true
AllowExit lets you disable the call to os.Exit() in the BaseExit function 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 Status)
BaseExit exits the process with a given return code.
Can be controlled with the global AllowExit. This should be used carefully and most likely only for testing.
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 Compare ¶ added in v1.0.0
Compare compares two Status types. If the left one (a) is worse than the right one (b), the result is < 0
If they are equal, the result is 0 ¶
If the right one (b) is worse than the left one (a), the result is > 0
func Exit ¶
Exit exits the process with a given return code determined from the given Status and the provided text output to stdout. To include performance that is recommended to use ExitWithPerfdata instead Note that, the text output is not sanitized and will be printed as is.
Example: OK - everything is fine exit 0 Example: [UNKNOWN] - not sure what happened exit 3
Example ¶
Exit(OK, fmt.Sprintf("Everything is fine - value=%d", 42))
Output: [OK] - Everything is fine - value=42 would exit with code 0
func ExitError ¶
func ExitError(err error)
ExitError exits with an Unknown state while reporting the error The Unknown state is used, since the plugin likely could not determine the actual status of whatever was meant to be checked.
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 ExitWithPerfdata ¶ added in v1.0.0
func ExitWithPerfdata(rc Status, perfdata PerfdataList, output ...string)
ExitWithPerfdata exits the process with a given return code determined from the Status, the performance data and the text output to stdout.
The provided text output will be sanitized to avoid multiple performance data separators (|).
Example: OK - everything is fine | mylabel=1 exit 0
Example ¶
perfdata := PerfdataList{}
perfdata.Add(&Perfdata{Label: "time_duration", Value: 23})
perfdata.Add(&Perfdata{Label: "packages_lost", Value: 42})
ExitWithPerfdata(Critical, perfdata, "Everything is broken", "Do something")
Output: [CRITICAL] - Everything is broken Do something|time_duration=23 packages_lost=42 would exit with code 2
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)
HandleTimeout is a 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 any)
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"`
}
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
Exit(OK, fmt.Sprintf("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()
EnableTimeoutHandler starts 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 Perfdata ¶ added in v1.0.0
type Perfdata struct {
Label string
Value any
// Uom is the unit-of-measurement, see links above for details.
Uom string
Warn *Threshold
Crit *Threshold
Min any
Max any
}
Perfdata represents all properties of performance data for Icinga
Implements fmt.Stringer to return the plaintext format for a plugin output. See also: https://www.monitoring-plugins.org/doc/guidelines.html#AEN201
For examples of Uom see: - https://github.com/Icinga/icinga2/blob/master/lib/base/perfdatavalue.cpp - https://icinga.com/docs/icinga-2/latest/doc/05-service-monitoring/#unit-of-measurement-uom
func (Perfdata) String ¶ added in v1.0.0
String returns the proper format for the plugin output on errors (occurs with invalid data, the empty string is returned
func (Perfdata) ValidatedString ¶ added in v1.0.0
ValidatedString returns the proper format for the plugin output Returns an error in some known cases where the value of a data type does not represent a valid measurement, see the explanation for "formatNumeric" for perfdata values.
type PerfdataList ¶ added in v1.0.0
type PerfdataList []*Perfdata
PerfdataList can store multiple perfdata and implements the fmt.Stringer interface to provide formatted output for the performance data
Example ¶
list := PerfdataList{}
list.Add(&Perfdata{Label: "test1", Value: 23})
list.Add(&Perfdata{Label: "test2", Value: 42})
fmt.Println(list)
Output: [test1=23 test2=42]
func (*PerfdataList) Add ¶ added in v1.0.0
func (l *PerfdataList) Add(p *Perfdata)
Add adds a Perfdata pointer to the list. Note that, it's not concurrency safe.
func (*PerfdataList) String ¶ added in v1.0.0
func (l *PerfdataList) String() string
String returns string representations of all Perfdata added to the list
type Status ¶ added in v1.0.0
type Status int
func NewStatus ¶ added in v1.0.0
NewStatus returns a state corresponding to its common string representation. When an invalid parameter is passed an error and an Unknown status will be returned
func NewStatusFromString ¶ added in v1.0.0
NewStatusFromString returns a state corresponding to its common string representation. When an invalid parameter is passed an error and an Unknown status will be returned
func WorstState ¶ added in v1.0.0
WorstState determines the worst state from a list of states
This can be used to combine multiple states into a one state. Order of preference: Critical, Unknown, Warning, Ok
Note that, this precedence was decided for this package since there is no specification for the preference. See also: https://www.monitoring-plugins.org/doc/guidelines.html#AEN74
type Threshold ¶
Threshold defines 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})
See also: https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT
func ParseThreshold ¶
ParseThreshold parses a Threshold from a string.
See the Threshold type for details.
func (Threshold) DoesViolate ¶
DoesViolate compares a value against the threshold, and returns true if the value violates the threshold.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package convert provides function to convert and humanize units
|
Package convert provides function to convert and humanize units |
|
examples
|
|
|
check_example
command
|
|
|
check_example2
command
|
|
|
Package result provides types and functions to organize results in a check plugin
|
Package result provides types and functions to organize results in a check plugin |
|
Package testhelper is used in testing.
|
Package testhelper is used in testing. |