// Test - XXX func (a *Agent) Test(config settings.Struct) error { allMetrics := collectors.CollectAllData() fmt.Println("\n------------------") fmt.Println("\033[92mCollecting Metrics: \033[0m") fmt.Println("") fmt.Println(allMetrics) fmt.Println("\n------------------") fmt.Println("\033[92mTesting settings: \033[0m") fmt.Println("") machineID := collectors.MachineID() if len(machineID) == 0 && len(config.ServerKey) == 0 { fmt.Println("Can't find Machine ID (looking in /etc/opt/amonagent/machine-id, /etc/machine-id and /var/lib/dbus/machine-id).") fmt.Println("This usually means D-bus is missing on this server. To solve this problem") fmt.Println("---") fmt.Println("On RPM distros:") fmt.Println("rpm install dbus") fmt.Println("dbus-uuidgen > /etc/opt/amonagent/machine-id") fmt.Println("---") fmt.Println("On Debian distros:") fmt.Println("apt-get install dbus") fmt.Println("dbus-uuidgen > /etc/opt/amonagent/machine-id") fmt.Println("---") fmt.Println("Or alternatively, you can 'Add Server' from the Amon Interface and paste the Server Key value") fmt.Println("as server_key in /etc/opt/amonagent.conf") } fmt.Println("\n------------------") url := remote.SystemURL() fmt.Printf("\033[92m\nSending data to %s \033[0m", url) err := remote.SendData(allMetrics) if err != nil { return fmt.Errorf("%s\n", err.Error()) } return nil }
func main() { flag.Parse() if *fListPlugins { ListPlugins() return } if len(*fPluginConfig) > 0 { pluginConfig, _ := plugins.GetConfigPath(*fPluginConfig) creator, ok := plugins.Plugins[pluginConfig.Name] if ok { plugin := creator() conf := plugin.SampleConfig() fmt.Println(conf) } else { fmt.Printf("Non existing plugin: %s", pluginConfig.Name) ListPlugins() } return } if len(*fTestPlugin) > 0 { pluginConfig, _ := plugins.GetConfigPath(*fTestPlugin) creator, ok := plugins.Plugins[pluginConfig.Name] if ok { plugin := creator() PluginResult, err := plugin.Collect(pluginConfig.Path) if err != nil { fmt.Printf("Can't get stats for plugin: %s", err) } fmt.Println(PluginResult) } else { fmt.Printf("Non existing plugin: %s", pluginConfig.Name) ListPlugins() } return } if *fVersion { v := fmt.Sprintf("Amon - Version %s", Version) fmt.Println(v) return } config := settings.Settings() // Detect Machine ID or ask for a valid Server Key in Settings machineID := collectors.MachineID() serverKey := config.ServerKey ag, err := amonagent.NewAgent(config) if err != nil { log.Fatal(err) } if *fTest { err = ag.Test(config) if err != nil { log.Fatal(err) } return } if *fMachineID { fmt.Print(machineID) return } if len(machineID) == 0 && len(serverKey) == 0 { log.Fatal("Can't detect Machine ID. Please define `server_key` in /etc/opt/amonagent/amonagent.conf ") } shutdown := make(chan struct{}) signals := make(chan os.Signal) signal.Notify(signals, os.Interrupt) go func() { <-signals close(shutdown) }() log.Printf("Starting Amon Agent (version %s)\n", Version) if *fPidfile != "" { // Ensure the required directory structure exists. err := os.MkdirAll(filepath.Dir(*fPidfile), 0700) if err != nil { log.Fatal(3, "Failed to verify pid directory", err) } f, err := os.Create(*fPidfile) if err != nil { log.Fatalf("Unable to create pidfile: %s", err) } fmt.Fprintf(f, "%d\n", os.Getpid()) f.Close() } ag.Run(shutdown) }