Better output formatting.
This commit is contained in:
		
							parent
							
								
									091ba2bc68
								
							
						
					
					
						commit
						cfe22aed63
					
				|  | @ -33,3 +33,10 @@ func StringInSlice(str string, slc []string) bool { | ||||||
| 	} | 	} | ||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // Logf prints a log entry if quiet is false.
 | ||||||
|  | func (c *Config) Logf(m string, v ...interface{}) { | ||||||
|  | 	if !c.Quiet { | ||||||
|  | 		log.Printf("[INFO] "+m, v...) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ func (c *Config) DumpJSON(filter string) error { | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	fmt.Fprintln(os.Stderr, "Authenticated to Unifi Controller @", c.UnifiBase, "as user", c.UnifiUser) | 	fmt.Fprintln(os.Stderr, "[INFO] Authenticated to Unifi Controller @", c.UnifiBase, "as user", c.UnifiUser) | ||||||
| 	if err := c.CheckSites(controller); err != nil { | 	if err := c.CheckSites(controller); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | @ -75,7 +75,7 @@ func dumpJSON(path, what string, site unifi.Site, controller *unifi.Unifi) error | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	fmt.Fprintf(os.Stderr, "Dumping %s JSON for site %s (%s)\n", what, site.Desc, site.Name) | 	fmt.Fprintf(os.Stderr, "[INFO] Dumping %s JSON for site %s (%s)\n", what, site.Desc, site.Name) | ||||||
| 	fmt.Println(string(body)) | 	fmt.Println(string(body)) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -65,9 +65,7 @@ func (u *UnifiPoller) GetConfig() error { | ||||||
| 	if u.DumpJSON != "" { | 	if u.DumpJSON != "" { | ||||||
| 		u.Quiet = true | 		u.Quiet = true | ||||||
| 	} | 	} | ||||||
| 	if !u.Config.Quiet { | 	u.Config.Logf("Loaded Configuration: %s", u.ConfigFile) | ||||||
| 		log.Println("[INFO] Loaded Configuration:", u.ConfigFile) |  | ||||||
| 	} |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -82,36 +80,46 @@ func (u *UnifiPoller) Run() error { | ||||||
| 		log.Println("[DEBUG] Debug Logging Enabled") | 		log.Println("[DEBUG] Debug Logging Enabled") | ||||||
| 	} | 	} | ||||||
| 	log.Printf("[INFO] Unifi-Poller v%v Starting Up! PID: %d", Version, os.Getpid()) | 	log.Printf("[INFO] Unifi-Poller v%v Starting Up! PID: %d", Version, os.Getpid()) | ||||||
| 	// Create an authenticated session to the Unifi Controller.
 | 	controller, err := c.GetController() | ||||||
| 	controller, err := unifi.NewUnifi(c.UnifiUser, c.UnifiPass, c.UnifiBase, c.VerifySSL) |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return errors.Wrap(err, "unifi controller") |  | ||||||
| 	} |  | ||||||
| 	if c.Debug { |  | ||||||
| 		controller.DebugLog = log.Printf // Log debug messages.
 |  | ||||||
| 	} |  | ||||||
| 	controller.ErrorLog = log.Printf // Log all errors.
 |  | ||||||
| 	if !c.Quiet { |  | ||||||
| 		log.Println("[INFO] Authenticated to Unifi Controller @", c.UnifiBase, "as user", c.UnifiUser) |  | ||||||
| 	} |  | ||||||
| 	if err := c.CheckSites(controller); err != nil { |  | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | 	infdb, err := c.GetInfluxDB() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	c.PollUnifiController(controller, infdb) | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *Config) GetInfluxDB() (influx.Client, error) { | ||||||
| 	infdb, err := influx.NewHTTPClient(influx.HTTPConfig{ | 	infdb, err := influx.NewHTTPClient(influx.HTTPConfig{ | ||||||
| 		Addr:     c.InfluxURL, | 		Addr:     c.InfluxURL, | ||||||
| 		Username: c.InfluxUser, | 		Username: c.InfluxUser, | ||||||
| 		Password: c.InfluxPass, | 		Password: c.InfluxPass, | ||||||
| 	}) | 	}) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return errors.Wrap(err, "influxdb") | 		return nil, errors.Wrap(err, "influxdb") | ||||||
| 	} | 	} | ||||||
| 	if c.Quiet { | 	c.Logf("Logging Measurements to InfluxDB at %s as user %s", c.InfluxURL, c.InfluxUser) | ||||||
|  | 	return infdb, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *Config) GetController() (*unifi.Unifi, error) { | ||||||
|  | 	// Create an authenticated session to the Unifi Controller.
 | ||||||
|  | 	controller, err := unifi.NewUnifi(c.UnifiUser, c.UnifiPass, c.UnifiBase, c.VerifySSL) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, errors.Wrap(err, "unifi controller") | ||||||
|  | 	} | ||||||
|  | 	controller.ErrorLog = log.Printf // Log all errors.
 | ||||||
| 	// Doing it this way allows debug error logs (line numbers, etc)
 | 	// Doing it this way allows debug error logs (line numbers, etc)
 | ||||||
| 		controller.DebugLog = nil | 	if c.Debug && !c.Quiet { | ||||||
| 	} else { | 		controller.DebugLog = log.Printf // Log debug messages.
 | ||||||
| 		log.Println("[INFO] Polling Unifi Controller Sites:", c.Sites) |  | ||||||
| 		log.Println("[INFO] Logging Measurements to InfluxDB at", c.InfluxURL, "as user", c.InfluxUser) |  | ||||||
| 	} | 	} | ||||||
| 	c.PollUnifiController(controller, infdb) | 	c.Logf("Authenticated to Unifi Controller at %s as user %s", c.UnifiBase, c.UnifiUser) | ||||||
| 	return nil | 	if err := c.CheckSites(controller); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	c.Logf("Polling Unifi Controller Sites: %v", c.Sites) | ||||||
|  | 	return controller, nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -16,13 +16,11 @@ func (c *Config) CheckSites(controller *unifi.Unifi) error { | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	if !c.Quiet { |  | ||||||
| 	msg := []string{} | 	msg := []string{} | ||||||
| 	for _, site := range sites { | 	for _, site := range sites { | ||||||
| 		msg = append(msg, site.Name+" ("+site.Desc+")") | 		msg = append(msg, site.Name+" ("+site.Desc+")") | ||||||
| 	} | 	} | ||||||
| 		log.Printf("[INFO] Found %d site(s) on controller: %v", len(msg), strings.Join(msg, ", ")) | 	c.Logf("Found %d site(s) on controller: %v", len(msg), strings.Join(msg, ", ")) | ||||||
| 	} |  | ||||||
| 	if StringInSlice("all", c.Sites) { | 	if StringInSlice("all", c.Sites) { | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|  | @ -72,12 +70,15 @@ func (c *Config) PollUnifiController(controller *unifi.Unifi, infdb influx.Clien | ||||||
| 			logErrors([]error{err}, "infdb.Write(bp)") | 			logErrors([]error{err}, "infdb.Write(bp)") | ||||||
| 		} | 		} | ||||||
| 		// Talk about the data.
 | 		// Talk about the data.
 | ||||||
| 		if !c.Quiet { | 		var fieldcount int | ||||||
| 			log.Printf("[INFO] Unifi Measurements Recorded. Sites: %d Clients: %d, "+ | 		for _, p := range bp.Points() { | ||||||
| 				"Wireless APs: %d, Gateways: %d, Switches: %d, Metrics: %d", | 			i, _ := p.Fields() | ||||||
| 				len(sites), len(clients.UCLs), | 			fieldcount += len(i) | ||||||
| 				len(devices.UAPs), len(devices.USGs), len(devices.USWs), len(bp.Points())) |  | ||||||
| 		} | 		} | ||||||
|  | 		c.Logf("Unifi Measurements Recorded. Sites: %d Clients: %d, "+ | ||||||
|  | 			"Wireless APs: %d, Gateways: %d, Switches: %d, Points: %d, Fields: %d", | ||||||
|  | 			len(sites), len(clients.UCLs), | ||||||
|  | 			len(devices.UAPs), len(devices.USGs), len(devices.USWs), len(bp.Points()), fieldcount) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue