Allow multiple points per device.
This commit is contained in:
		
							parent
							
								
									f752a5076a
								
							
						
					
					
						commit
						f638cdab10
					
				|  | @ -3,3 +3,5 @@ | |||
| /*.1.gz | ||||
| /*.1 | ||||
| /vendor | ||||
| .DS_Store | ||||
| *~ | ||||
|  |  | |||
|  | @ -102,10 +102,10 @@ func (c *Config) PollUnifiController(infdb influx.Client, unifi *unidev.AuthedRe | |||
| 		} | ||||
| 
 | ||||
| 		for _, asset := range append(clients, devices...) { | ||||
| 			if pt, errr := asset.Point(); errr != nil { | ||||
| 				log.Println("asset.Point():", errr) | ||||
| 			if pt, errr := asset.Points(); errr != nil { | ||||
| 				log.Println("asset.Points():", errr) | ||||
| 			} else { | ||||
| 				bp.AddPoint(pt) | ||||
| 				bp.AddPoints(pt) | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,8 +7,8 @@ import ( | |||
| 	influx "github.com/influxdata/influxdb/client/v2" | ||||
| ) | ||||
| 
 | ||||
| // Point generates a client's datapoint for InfluxDB.
 | ||||
| func (u UCL) Point() (*influx.Point, error) { | ||||
| // Points generates a client's datapoints for InfluxDB.
 | ||||
| func (u UCL) Points() (points []*influx.Point, err error) { | ||||
| 	if u.Name == "" && u.Hostname != "" { | ||||
| 		u.Name = u.Hostname | ||||
| 	} else if u.Hostname == "" && u.Name != "" { | ||||
|  | @ -95,6 +95,6 @@ func (u UCL) Point() (*influx.Point, error) { | |||
| 		"wired-tx_bytes-r":       u.WiredTxBytesR, | ||||
| 		"wired-tx_packets":       u.WiredTxPackets, | ||||
| 	} | ||||
| 
 | ||||
| 	return influx.NewPoint("clients", tags, fields, time.Now()) | ||||
| 	points[0], err = influx.NewPoint("clients", tags, fields, time.Now()) | ||||
| 	return | ||||
| } | ||||
|  |  | |||
|  | @ -7,8 +7,8 @@ import ( | |||
| 	influx "github.com/influxdata/influxdb/client/v2" | ||||
| ) | ||||
| 
 | ||||
| // Point generates a device's datapoint for InfluxDB.
 | ||||
| func (u UAP) Point() (*influx.Point, error) { | ||||
| // Points generates a device's datapoints for InfluxDB.
 | ||||
| func (u UAP) Points() (points []*influx.Point, err error) { | ||||
| 	tags := map[string]string{ | ||||
| 		"id":                      u.ID, | ||||
| 		"mac":                     u.Mac, | ||||
|  | @ -165,5 +165,6 @@ func (u UAP) Point() (*influx.Point, error) { | |||
| 		"stat_wifi1-tx_packets":      u.Stat.Wifi1TxPackets, | ||||
| 		"stat_wifi1-tx_retries":      u.Stat.Wifi1TxRetries, | ||||
| 	} | ||||
| 	return influx.NewPoint("uap", tags, fields, time.Now()) | ||||
| 	points[0], err = influx.NewPoint("uap", tags, fields, time.Now()) | ||||
| 	return | ||||
| } | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ const LoginPath = "/api/login" | |||
| // Asset provides a common interface to retreive metrics from a device or client.
 | ||||
| type Asset interface { | ||||
| 	// Point() means this is useful to influxdb..
 | ||||
| 	Point() (*influx.Point, error) | ||||
| 	Points() ([]*influx.Point, error) | ||||
| 	// Add more methods to achieve more usefulness from this library.
 | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,8 +7,8 @@ import ( | |||
| 	influx "github.com/influxdata/influxdb/client/v2" | ||||
| ) | ||||
| 
 | ||||
| // Point generates a device's datapoint for InfluxDB.
 | ||||
| func (u USG) Point() (*influx.Point, error) { | ||||
| // Points generates a device's datapoints for InfluxDB.
 | ||||
| func (u USG) Points() (points []*influx.Point, err error) { | ||||
| 	tags := map[string]string{ | ||||
| 		"id":                      u.ID, | ||||
| 		"mac":                     u.Mac, | ||||
|  | @ -117,5 +117,6 @@ func (u USG) Point() (*influx.Point, error) { | |||
| 		"wan-tx_bytes":      u.Stat.WanTxBytes, | ||||
| 		"wan-tx_packets":    u.Stat.WanTxPackets, | ||||
| 	} | ||||
| 	return influx.NewPoint("usg", tags, fields, time.Now()) | ||||
| 	points[0], err = influx.NewPoint("usg", tags, fields, time.Now()) | ||||
| 	return | ||||
| } | ||||
|  |  | |||
|  | @ -7,8 +7,8 @@ import ( | |||
| 	influx "github.com/influxdata/influxdb/client/v2" | ||||
| ) | ||||
| 
 | ||||
| // Point generates a device's datapoint for InfluxDB.
 | ||||
| func (u USW) Point() (*influx.Point, error) { | ||||
| // Points generates a device's datapoints for InfluxDB.
 | ||||
| func (u USW) Points() (points []*influx.Point, err error) { | ||||
| 	tags := map[string]string{ | ||||
| 		"id":                     u.ID, | ||||
| 		"mac":                    u.Mac, | ||||
|  | @ -109,5 +109,6 @@ func (u USW) Point() (*influx.Point, error) { | |||
| 		"stat_tx_retries":          u.Stat.TxRetries, | ||||
| 		// Add the port stats too.
 | ||||
| 	} | ||||
| 	return influx.NewPoint("usw", tags, fields, time.Now()) | ||||
| 	points[0], err = influx.NewPoint("usw", tags, fields, time.Now()) | ||||
| 	return | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue