// FetchMetrics interface for mackerelplugin func (u UptimePlugin) FetchMetrics() (map[string]interface{}, error) { ut, err := uptime.Get() if err != nil { return nil, fmt.Errorf("Faild to fetch uptime metrics: %s", err) } return map[string]interface{}{"seconds": ut}, nil }
func run(args []string) *checkers.Checker { _, err := flags.ParseArgs(&opts, args) if err != nil { os.Exit(1) } ut, err := uptime.Get() if err != nil { return checkers.Unknown(fmt.Sprintf("Faild to fetch uptime metrics: %s", err)) } checkSt := checkers.OK if opts.WarnUnder != nil && *opts.WarnUnder > ut { checkSt = checkers.WARNING } if opts.WarnOver != nil && *opts.WarnOver < ut { checkSt = checkers.WARNING } if opts.CritUnder != nil && *opts.CritUnder > ut { checkSt = checkers.CRITICAL } if opts.CritOver != nil && *opts.CritOver < ut { checkSt = checkers.CRITICAL } dur := time.Duration(ut * float64(time.Second)) hours := int64(dur.Hours()) days := hours / 24 hours = hours % 24 mins := int64(dur.Minutes()) % 60 msg := fmt.Sprintf("%d day(s) %d hour(s) %d minute(s) (%d second(s))\n", days, hours, mins, int64(dur.Seconds())) return checkers.NewChecker(checkSt, msg) }