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