re-do re-auth
This commit is contained in:
parent
ef62184fb9
commit
fe931d7f86
|
|
@ -2,6 +2,7 @@ package poller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/davidnewhall/unifi-poller/pkg/influxunifi"
|
"github.com/davidnewhall/unifi-poller/pkg/influxunifi"
|
||||||
|
|
@ -29,6 +30,20 @@ func (u *UnifiPoller) GetInfluxDB() (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PollController runs forever, polling UniFi and pushing to InfluxDB
|
||||||
|
// This is started by Run() or RunBoth() after everything checks out.
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// CollectAndProcess collects measurements and then reports them to InfluxDB
|
// CollectAndProcess collects measurements and then reports them to InfluxDB
|
||||||
// Can be called once or in a ticker loop. This function and all the ones below
|
// Can be called once or in a ticker loop. This function and all the ones below
|
||||||
// handle their own logging. An error is returned so the calling function may
|
// handle their own logging. An error is returned so the calling function may
|
||||||
|
|
|
||||||
|
|
@ -131,17 +131,3 @@ func (u *UnifiPoller) Run() error {
|
||||||
return u.RunPrometheus()
|
return u.RunPrometheus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PollController runs forever, polling UniFi and pushing to InfluxDB
|
|
||||||
// This is started by Run() or RunBoth() after everything checks out.
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -84,18 +84,9 @@ func (u *UnifiPoller) CollectMetrics() (*metrics.Metrics, error) {
|
||||||
metrics := &metrics.Metrics{}
|
metrics := &metrics.Metrics{}
|
||||||
|
|
||||||
for _, c := range u.Config.Controllers {
|
for _, c := range u.Config.Controllers {
|
||||||
m, err := u.collectController(c)
|
m, err := u.checkAndPollController(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.LogErrorf("collecting metrics from %s: %v", c.URL, err)
|
errs = append(errs, err.Error())
|
||||||
u.Logf("Re-authenticating to UniFi Controller: %s", c.URL)
|
|
||||||
|
|
||||||
if err := u.GetUnifi(c); err != nil {
|
|
||||||
u.LogErrorf("re-authenticating to %s: %v", c.URL, err)
|
|
||||||
errs = append(errs, err.Error())
|
|
||||||
} else if m, err = u.collectController(c); err != nil {
|
|
||||||
u.LogErrorf("collecting metrics from %s: %v", c.URL, err)
|
|
||||||
errs = append(errs, err.Error())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if m == nil {
|
if m == nil {
|
||||||
|
|
@ -129,19 +120,35 @@ func (u *UnifiPoller) CollectMetrics() (*metrics.Metrics, error) {
|
||||||
return metrics, err
|
return metrics, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UnifiPoller) collectController(c Controller) (*metrics.Metrics, error) {
|
func (u *UnifiPoller) checkAndPollController(c Controller) (*metrics.Metrics, error) {
|
||||||
var err error
|
|
||||||
|
|
||||||
if c.Unifi == nil {
|
if c.Unifi == nil {
|
||||||
// Some users need to re-auth every interval because the cookie times out.
|
u.Logf("Re-authenticating to UniFi Controller: %s", c.URL)
|
||||||
// Sometimes we hit this path when the controller dies.
|
|
||||||
u.Logf("Re-authenticating to UniFi Controller: %v", c.URL)
|
|
||||||
|
|
||||||
if err := u.GetUnifi(c); err != nil {
|
if err := u.GetUnifi(c); err != nil {
|
||||||
|
u.LogErrorf("re-authenticating to %s: %v", c.URL, err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m, err := u.collectController(c)
|
||||||
|
if err == nil {
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
u.LogErrorf("collecting metrics %v", err)
|
||||||
|
u.Logf("Re-authenticating to UniFi Controller: %s", c.URL)
|
||||||
|
|
||||||
|
if err := u.GetUnifi(c); err != nil {
|
||||||
|
u.LogErrorf("re-authenticating to %s: %v", c.URL, err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return u.collectController(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *UnifiPoller) collectController(c Controller) (*metrics.Metrics, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
m := &metrics.Metrics{TS: u.LastCheck} // At this point, it's the Current Check.
|
m := &metrics.Metrics{TS: u.LastCheck} // At this point, it's the Current Check.
|
||||||
|
|
||||||
// Get the sites we care about.
|
// Get the sites we care about.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue