// Collect metrics from the '/metrics/snapshot' endpoint on the master. The '/metrics/snapshot' endpoint returns JSON, // and all metrics contained in the endpoint use a string as the key, and a double (float64) for the value. For example: // // { // "master/cpus_total": 2.0 // } // func GetMetricsSnapshot(host string) (map[string]float64, error) { log.Debug("Getting metrics snapshot for host ", host) data := map[string]float64{} c := client.NewClient(host, "/metrics/snapshot", time.Duration(5)) if err := c.Fetch(&data); err != nil { log.Error(err) return nil, err } return data, nil }
// Collect metrics from the '/monitor/statistics' endpoint on the agent. This endpoint returns JSON, and all metrics // contained in the endpoint use a string as the key. Depending on features enabled on the Mesos agent, additional // metrics might be available under either the "statistics" object, or additional nested objects (e.g. "perf") as // defined by the Executor structure, and the structures in mesos_pb2.ResourceStatistics. func GetMonitoringStatistics(host string) ([]Executor, error) { log.Debug("Getting monitoring statistics from host ", host) var executors []Executor c := client.NewClient(host, "/monitor/statistics", time.Duration(30)) if err := c.Fetch(&executors); err != nil { log.Error(err) return nil, err } return executors, nil }
// Get metrics from the '/master/frameworks' endpoint on the master. This endpoint returns JSON about the overall // state and resource utilization of the frameworks running on the cluster. func GetFrameworks(host string) ([]*Framework, error) { log.Debug("Getting active frameworks resource utilization from master ", host) var frameworks Frameworks c := client.NewClient(host, "/master/frameworks", time.Duration(10)) if err := c.Fetch(&frameworks); err != nil { log.Error(err) return nil, err } return frameworks.ActiveFrameworks, nil }
// Get the configuration flags from the Mesos agent and return them as a map. func GetFlags(host string) (map[string]string, error) { log.Debug("Getting configuration flags from host ", host) flags := &Flags{} c := client.NewClient(host, "/slave(1)/flags", time.Duration(5)) if err := c.Fetch(&flags); err != nil { log.Error(err) return nil, err } return flags.Flags, nil }