func main() { flag.Usage = func() { fmt.Fprintf(os.Stderr, "usage: %s [flags] <destination>\n", os.Args[0]) flag.PrintDefaults() } interval := flag.Duration("interval", time.Second*1, "ping packet retransmission interval") timeout := flag.Duration("timeout", time.Second*5, "ping timeout until failure") flag.Parse() if flag.NArg() != 1 { flag.Usage() os.Exit(1) } server := flag.Arg(0) host, port, err := net.SplitHostPort(server) if err != nil { host = server port = strconv.Itoa(gumble.DefaultPort) } resp, err := gumble.Ping(net.JoinHostPort(host, port), *interval, *timeout) if err != nil { fmt.Fprintf(os.Stderr, "%s: %s\n", os.Args[0], err) os.Exit(1) } major, minor, patch := resp.Version.SemanticVersion() fmt.Printf("Address: %s\n", resp.Address) fmt.Printf("Ping: %s\n", resp.Ping) fmt.Printf("Version: %d.%d.%d\n", major, minor, patch) fmt.Printf("Connected Users: %d\n", resp.ConnectedUsers) fmt.Printf("Maximum Users: %d\n", resp.MaximumUsers) fmt.Printf("Maximum Bitrate: %d\n", resp.MaximumBitrate) }
// FetchMetrics interface for mackerelplugin func (m MurmurPlugin) FetchMetrics() (map[string]interface{}, error) { resp, err := mumble.Ping(m.Host, 0, time.Millisecond*time.Duration(m.Timeout)) if err != nil { return nil, err } metrics := map[string]interface{}{ "con_cur": uint32(resp.ConnectedUsers), "con_max": uint32(resp.MaximumUsers), } return metrics, nil }
func main() { server := flag.String("server", "localhost:64738", "mumble server address") timeout := flag.Duration("timeout", time.Second*5, "ping timeout until failure") flag.Parse() resp, err := gumble.Ping(*server, *timeout) if err != nil { fmt.Fprintf(os.Stderr, "%s: %s\n", os.Args[0], err) os.Exit(1) } major, minor, patch := resp.Version.SemanticVersion() fmt.Printf("Address: %s\n", resp.Address) fmt.Printf("Ping: %s\n", resp.Ping) fmt.Printf("Version: %d.%d.%d\n", major, minor, patch) fmt.Printf("Connected Users: %d\n", resp.ConnectedUsers) fmt.Printf("Maximum Users: %d\n", resp.MaximumUsers) fmt.Printf("Maximum Bitrate: %d\n", resp.MaximumBitrate) }