a litle lint
This commit is contained in:
parent
d47b569a49
commit
539723ece1
|
|
@ -12,6 +12,7 @@ func (u *UnifiPoller) GetInfluxDB() (err error) {
|
|||
if u.Influx != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
u.Influx, err = influxunifi.New(&influxunifi.Config{
|
||||
Database: u.Config.InfluxDB,
|
||||
User: u.Config.InfluxUser,
|
||||
|
|
@ -22,7 +23,9 @@ func (u *UnifiPoller) GetInfluxDB() (err error) {
|
|||
if err != nil {
|
||||
return fmt.Errorf("influxdb: %v", err)
|
||||
}
|
||||
|
||||
u.Logf("Logging Measurements to InfluxDB at %s as user %s", u.Config.InfluxURL, u.Config.InfluxUser)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -40,6 +43,7 @@ func (u *UnifiPoller) CollectAndProcess() error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
u.AugmentMetrics(metrics)
|
||||
|
||||
report, err := u.Influx.ReportMetrics(metrics)
|
||||
|
|
@ -54,9 +58,11 @@ func (u *UnifiPoller) CollectAndProcess() error {
|
|||
// LogInfluxReport writes a log message after exporting to influxdb.
|
||||
func (u *UnifiPoller) LogInfluxReport(r *influxunifi.Report) {
|
||||
idsMsg := ""
|
||||
|
||||
if u.Config.SaveIDS {
|
||||
idsMsg = fmt.Sprintf("IDS Events: %d, ", len(r.Metrics.IDSList))
|
||||
}
|
||||
|
||||
u.Logf("UniFi Metrics Recorded. Sites: %d, Clients: %d, "+
|
||||
"UAP: %d, USG/UDM: %d, USW: %d, %sPoints: %d, Fields: %d, Errs: %d, Elapsed: %v",
|
||||
len(r.Metrics.Sites), len(r.Metrics.Clients), len(r.Metrics.UAPs),
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ func (u *UnifiPoller) RunPrometheus() error {
|
|||
LoggingFn: u.LogExportReport,
|
||||
ReportErrors: true, // XXX: Does this need to be configurable?
|
||||
}))
|
||||
|
||||
return http.ListenAndServe(u.Config.HTTPListen, nil)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -124,14 +124,16 @@ func (u *UnifiPoller) Run() error {
|
|||
func (u *UnifiPoller) PollController() {
|
||||
interval := u.Config.Interval.Round(time.Second)
|
||||
log.Printf("[INFO] Everything checks out! Poller started, InfluxDB interval: %v", interval)
|
||||
|
||||
ticker := time.NewTicker(interval)
|
||||
for u.LastCheck = range ticker.C {
|
||||
if err := u.CollectAndProcess(); err != nil {
|
||||
u.LogErrorf("%v", err)
|
||||
|
||||
if u.Unifi != nil {
|
||||
u.Unifi.CloseIdleConnections()
|
||||
u.Unifi = nil // trigger re-auth in unifi.go.
|
||||
}
|
||||
u.Unifi = nil // trigger re-auth in unifi.go.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,9 +13,11 @@ import (
|
|||
func (u *UnifiPoller) GetUnifi() (err error) {
|
||||
u.Lock()
|
||||
defer u.Unlock()
|
||||
|
||||
if u.Unifi != nil {
|
||||
u.Unifi.CloseIdleConnections()
|
||||
}
|
||||
|
||||
// Create an authenticated session to the Unifi Controller.
|
||||
u.Unifi, err = unifi.NewUnifi(&unifi.Config{
|
||||
User: u.Config.UnifiUser,
|
||||
|
|
@ -29,6 +31,7 @@ func (u *UnifiPoller) GetUnifi() (err error) {
|
|||
u.Unifi = nil
|
||||
return fmt.Errorf("unifi controller: %v", err)
|
||||
}
|
||||
|
||||
u.LogDebugf("Authenticated with controller successfully")
|
||||
|
||||
return u.CheckSites()
|
||||
|
|
@ -40,20 +43,26 @@ func (u *UnifiPoller) CheckSites() error {
|
|||
if strings.Contains(strings.ToLower(u.Config.Mode), "lambda") {
|
||||
return nil // Skip this in lambda mode.
|
||||
}
|
||||
|
||||
u.LogDebugf("Checking Controller Sites List")
|
||||
|
||||
sites, err := u.Unifi.GetSites()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msg := []string{}
|
||||
|
||||
for _, site := range sites {
|
||||
msg = append(msg, site.Name+" ("+site.Desc+")")
|
||||
}
|
||||
u.Logf("Found %d site(s) on controller: %v", len(msg), strings.Join(msg, ", "))
|
||||
|
||||
if StringInSlice("all", u.Config.Sites) {
|
||||
u.Config.Sites = []string{"all"}
|
||||
return nil
|
||||
}
|
||||
|
||||
FIRST:
|
||||
for _, s := range u.Config.Sites {
|
||||
for _, site := range sites {
|
||||
|
|
@ -64,6 +73,7 @@ FIRST:
|
|||
// This is fine, it may get added later.
|
||||
u.LogErrorf("configured site not found on controller: %v", s)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -110,23 +120,29 @@ func (u *UnifiPoller) AugmentMetrics(metrics *metrics.Metrics) {
|
|||
if metrics == nil || metrics.Devices == nil || metrics.Clients == nil {
|
||||
return
|
||||
}
|
||||
|
||||
devices := make(map[string]string)
|
||||
bssdIDs := make(map[string]string)
|
||||
|
||||
for _, r := range metrics.UAPs {
|
||||
devices[r.Mac] = r.Name
|
||||
for _, v := range r.VapTable {
|
||||
bssdIDs[v.Bssid] = fmt.Sprintf("%s %s %s:", r.Name, v.Radio, v.RadioName)
|
||||
}
|
||||
}
|
||||
|
||||
for _, r := range metrics.USGs {
|
||||
devices[r.Mac] = r.Name
|
||||
}
|
||||
|
||||
for _, r := range metrics.USWs {
|
||||
devices[r.Mac] = r.Name
|
||||
}
|
||||
|
||||
for _, r := range metrics.UDMs {
|
||||
devices[r.Mac] = r.Name
|
||||
}
|
||||
|
||||
// These come blank, so set them here.
|
||||
for i, c := range metrics.Clients {
|
||||
metrics.Clients[i].SwName = devices[c.SwMac]
|
||||
|
|
@ -134,6 +150,7 @@ func (u *UnifiPoller) AugmentMetrics(metrics *metrics.Metrics) {
|
|||
metrics.Clients[i].GwName = devices[c.GwMac]
|
||||
metrics.Clients[i].RadioDescription = bssdIDs[metrics.Clients[i].Bssid] + metrics.Clients[i].RadioProto
|
||||
}
|
||||
|
||||
if !u.Config.SaveSites {
|
||||
metrics.Sites = nil
|
||||
}
|
||||
|
|
@ -143,13 +160,15 @@ func (u *UnifiPoller) AugmentMetrics(metrics *metrics.Metrics) {
|
|||
// Omits requested but unconfigured sites. Grabs the full list from the
|
||||
// controller and returns the sites provided in the config file.
|
||||
func (u *UnifiPoller) GetFilteredSites() (unifi.Sites, error) {
|
||||
var i int
|
||||
|
||||
sites, err := u.Unifi.GetSites()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if len(u.Config.Sites) < 1 || StringInSlice("all", u.Config.Sites) {
|
||||
return sites, nil
|
||||
}
|
||||
var i int
|
||||
|
||||
for _, s := range sites {
|
||||
// Only include valid sites in the request filter.
|
||||
if StringInSlice(s.Name, u.Config.Sites) {
|
||||
|
|
@ -157,5 +176,6 @@ func (u *UnifiPoller) GetFilteredSites() (unifi.Sites, error) {
|
|||
i++
|
||||
}
|
||||
}
|
||||
|
||||
return sites[:i], nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue