re-arrange pieces
This commit is contained in:
parent
0f02bb3031
commit
2bb38b900e
|
|
@ -44,7 +44,6 @@ func (u *UnifiPoller) CollectAndProcess() error {
|
|||
|
||||
report, err := u.Influx.ReportMetrics(metrics)
|
||||
if err != nil {
|
||||
u.LogErrorf("processing metrics: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -92,11 +92,13 @@ func (f *Flag) Parse(args []string) {
|
|||
// 2. Run the collector one time and report the metrics to influxdb. (lambda)
|
||||
// 3. Start a web server and wait for Prometheus to poll the application for metrics.
|
||||
func (u *UnifiPoller) Run() error {
|
||||
if err := u.GetUnifi(); err != nil {
|
||||
return err
|
||||
switch err := u.GetUnifi(); err {
|
||||
case nil:
|
||||
u.Logf("Polling UniFi Controller at %s v%s as user %s. Sites: %v",
|
||||
u.Config.UnifiBase, u.Unifi.ServerVersion, u.Config.UnifiUser, u.Config.Sites)
|
||||
default:
|
||||
u.LogErrorf("Controller Auth or Connection failed, but continuing to retry! %v", err)
|
||||
}
|
||||
u.Logf("Polling UniFi Controller at %s v%s as user %s. Sites: %v",
|
||||
u.Config.UnifiBase, u.Unifi.ServerVersion, u.Config.UnifiUser, u.Config.Sites)
|
||||
|
||||
switch strings.ToLower(u.Config.Mode) {
|
||||
default:
|
||||
|
|
@ -116,23 +118,13 @@ func (u *UnifiPoller) Run() error {
|
|||
// PollController runs forever, polling UniFi and pushing to InfluxDB
|
||||
// This is started by Run() or RunBoth() after everything checks out.
|
||||
func (u *UnifiPoller) PollController() {
|
||||
var tryAgain bool
|
||||
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 {
|
||||
// Some users need to re-auth every interval because the cookie times out.
|
||||
if u.Config.ReAuth || tryAgain {
|
||||
u.LogDebugf("Re-authenticating to UniFi Controller")
|
||||
if err := u.Unifi.Login(); err != nil {
|
||||
u.LogErrorf("%v", err)
|
||||
continue
|
||||
}
|
||||
tryAgain = false
|
||||
}
|
||||
if err := u.CollectAndProcess(); err != nil {
|
||||
u.LogErrorf("%v", err)
|
||||
tryAgain = true
|
||||
u.Unifi = nil // trigger re-auth in unifi.go.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ func (u *UnifiPoller) GetUnifi() (err error) {
|
|||
DebugLog: u.LogDebugf, // Log debug messages.
|
||||
})
|
||||
if err != nil {
|
||||
u.Unifi = nil
|
||||
return fmt.Errorf("unifi controller: %v", err)
|
||||
}
|
||||
u.LogDebugf("Authenticated with controller successfully")
|
||||
|
|
@ -63,20 +64,31 @@ FIRST:
|
|||
|
||||
// CollectMetrics grabs all the measurements from a UniFi controller and returns them.
|
||||
func (u *UnifiPoller) CollectMetrics() (*metrics.Metrics, error) {
|
||||
if u.Unifi == nil || u.Config.ReAuth {
|
||||
// Some users need to re-auth every interval because the cookie times out.
|
||||
// Sometimes we hit this path when the controller dies.
|
||||
u.LogDebugf("Re-authenticating to UniFi Controller")
|
||||
if err := u.GetUnifi(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
m := &metrics.Metrics{TS: u.LastCheck} // At this point, it's the Current Check.
|
||||
var err error
|
||||
// Get the sites we care about.
|
||||
m.Sites, err = u.GetFilteredSites()
|
||||
u.LogErrorf("unifi.GetSites(): %v", err)
|
||||
if m.Sites, err = u.GetFilteredSites(); err != nil {
|
||||
u.LogErrorf("unifi.GetSites(): %v", err)
|
||||
}
|
||||
if u.Config.SaveIDS {
|
||||
m.IDSList, err = u.Unifi.GetIDS(m.Sites, time.Now().Add(u.Config.Interval.Duration), time.Now())
|
||||
u.LogErrorf("unifi.GetIDS(): %v", err)
|
||||
}
|
||||
// Get all the points.
|
||||
m.Clients, err = u.Unifi.GetClients(m.Sites)
|
||||
u.LogErrorf("unifi.GetClients(): %v", err)
|
||||
m.Devices, err = u.Unifi.GetDevices(m.Sites)
|
||||
u.LogErrorf("unifi.GetDevices(): %v", err)
|
||||
if m.Clients, err = u.Unifi.GetClients(m.Sites); err != nil {
|
||||
u.LogErrorf("unifi.GetClients(): %v", err)
|
||||
}
|
||||
if m.Devices, err = u.Unifi.GetDevices(m.Sites); err != nil {
|
||||
u.LogErrorf("unifi.GetDevices(): %v", err)
|
||||
}
|
||||
return m, err
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue