Updates
This commit is contained in:
parent
1ffbcccaca
commit
1b75963002
|
|
@ -106,10 +106,10 @@ is provided so the application can be easily adapted to any environment.
|
||||||
measurements at /metrics for collection by prometheus. Enabling this
|
measurements at /metrics for collection by prometheus. Enabling this
|
||||||
mode disables InfluxDB usage entirely. This is BETA.
|
mode disables InfluxDB usage entirely. This is BETA.
|
||||||
|
|
||||||
http_listen default: 0.0.0.0:61317
|
http_listen default: 0.0.0.0:9130
|
||||||
This option controls the IP and port the http listener uses when the
|
This option controls the IP and port the http listener uses when the
|
||||||
mode is set to prometheus. This setting has no effect when other modes
|
mode is set to prometheus. This setting has no effect when other modes
|
||||||
are in use.
|
are in use. Metrics become available at the /metrics URI.
|
||||||
|
|
||||||
influx_url default: http://127.0.0.1:8086
|
influx_url default: http://127.0.0.1:8086
|
||||||
This is the URL where the Influx web server is available.
|
This is the URL where the Influx web server is available.
|
||||||
|
|
|
||||||
2
main.go
2
main.go
|
|
@ -8,7 +8,7 @@ import (
|
||||||
|
|
||||||
// Keep it simple.
|
// Keep it simple.
|
||||||
func main() {
|
func main() {
|
||||||
if err := poller.Start(); err != nil {
|
if err := poller.New().Start(); err != nil {
|
||||||
log.Fatalln("[ERROR]", err)
|
log.Fatalln("[ERROR]", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ const (
|
||||||
defaultInfluxURL = "http://127.0.0.1:8086"
|
defaultInfluxURL = "http://127.0.0.1:8086"
|
||||||
defaultUnifiUser = "influx"
|
defaultUnifiUser = "influx"
|
||||||
defaultUnifiURL = "https://127.0.0.1:8443"
|
defaultUnifiURL = "https://127.0.0.1:8443"
|
||||||
defaultHTTPListen = ":61317"
|
defaultHTTPListen = "0.0.0.0:9130"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ENVConfigPrefix is the prefix appended to an env variable tag
|
// ENVConfigPrefix is the prefix appended to an env variable tag
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import (
|
||||||
// HTTP at /metrics for prometheus collection.
|
// HTTP at /metrics for prometheus collection.
|
||||||
// This is run by Prometheus as CollectFn.
|
// This is run by Prometheus as CollectFn.
|
||||||
func (u *UnifiPoller) ExportMetrics() (*metrics.Metrics, error) {
|
func (u *UnifiPoller) ExportMetrics() (*metrics.Metrics, error) {
|
||||||
u.LastCheck = time.Now()
|
|
||||||
m, err := u.CollectMetrics()
|
m, err := u.CollectMetrics()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.LogErrorf("collecting metrics: %v", err)
|
u.LogErrorf("collecting metrics: %v", err)
|
||||||
|
|
@ -21,6 +20,7 @@ func (u *UnifiPoller) ExportMetrics() (*metrics.Metrics, error) {
|
||||||
u.LogError(err, "re-authenticating")
|
u.LogError(err, "re-authenticating")
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if m, err = u.CollectMetrics(); err != nil {
|
if m, err = u.CollectMetrics(); err != nil {
|
||||||
u.LogErrorf("collecting metrics: %v", err)
|
u.LogErrorf("collecting metrics: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -18,43 +18,57 @@ import (
|
||||||
"golift.io/unifi"
|
"golift.io/unifi"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Start begins the application from a CLI.
|
// New returns a new poller struct preloaded with default values.
|
||||||
// Parses flags, parses config and executes Run().
|
// No need to call this if you call Start.c
|
||||||
func Start() error {
|
func New() *UnifiPoller {
|
||||||
log.SetFlags(log.LstdFlags)
|
return &UnifiPoller{
|
||||||
up := &UnifiPoller{
|
|
||||||
Flag: &Flag{},
|
|
||||||
Config: &Config{
|
Config: &Config{
|
||||||
// Preload our defaults.
|
|
||||||
InfluxURL: defaultInfluxURL,
|
InfluxURL: defaultInfluxURL,
|
||||||
InfluxUser: defaultInfluxUser,
|
InfluxUser: defaultInfluxUser,
|
||||||
InfluxPass: defaultInfluxPass,
|
InfluxPass: defaultInfluxPass,
|
||||||
InfluxDB: defaultInfluxDB,
|
InfluxDB: defaultInfluxDB,
|
||||||
UnifiUser: defaultUnifiUser,
|
UnifiUser: defaultUnifiUser,
|
||||||
UnifiPass: os.Getenv("UNIFI_PASSWORD"), // deprecated name.
|
UnifiPass: defaultUnifiUser,
|
||||||
UnifiBase: defaultUnifiURL,
|
UnifiBase: defaultUnifiURL,
|
||||||
Interval: Duration{defaultInterval},
|
Interval: Duration{defaultInterval},
|
||||||
Sites: []string{"all"},
|
Sites: []string{"all"},
|
||||||
HTTPListen: defaultHTTPListen,
|
HTTPListen: defaultHTTPListen,
|
||||||
Namespace: appName,
|
Namespace: appName,
|
||||||
}}
|
}, Flag: &Flag{},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start begins the application from a CLI.
|
||||||
|
// Parses flags, parses config and executes Run().
|
||||||
|
func (u *UnifiPoller) Start() error {
|
||||||
|
log.SetFlags(log.LstdFlags)
|
||||||
|
up := New()
|
||||||
up.Flag.Parse(os.Args[1:])
|
up.Flag.Parse(os.Args[1:])
|
||||||
|
|
||||||
if up.Flag.ShowVer {
|
if up.Flag.ShowVer {
|
||||||
fmt.Printf("%s v%s\n", appName, Version)
|
fmt.Printf("%s v%s\n", appName, Version)
|
||||||
return nil // don't run anything else w/ version request.
|
return nil // don't run anything else w/ version request.
|
||||||
}
|
}
|
||||||
|
|
||||||
if up.Flag.DumpJSON == "" { // do not print this when dumping JSON.
|
if up.Flag.DumpJSON == "" { // do not print this when dumping JSON.
|
||||||
up.Logf("Loading Configuration File: %s", up.Flag.ConfigFile)
|
up.Logf("Loading Configuration File: %s", up.Flag.ConfigFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse config file.
|
// Parse config file.
|
||||||
if err := up.Config.ParseFile(up.Flag.ConfigFile); err != nil {
|
if err := up.Config.ParseFile(up.Flag.ConfigFile); err != nil {
|
||||||
up.Flag.Usage()
|
up.Flag.Usage()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Config with ENV variable overrides.
|
// Update Config with ENV variable overrides.
|
||||||
if err := up.Config.ParseENV(); err != nil {
|
if err := up.Config.ParseENV(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if up.Flag.DumpJSON != "" {
|
||||||
|
return up.DumpJSONPayload()
|
||||||
|
}
|
||||||
|
|
||||||
return up.Run()
|
return up.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,6 +79,7 @@ func (f *Flag) Parse(args []string) {
|
||||||
fmt.Printf("Usage: %s [--config=/path/to/up.conf] [--version]", appName)
|
fmt.Printf("Usage: %s [--config=/path/to/up.conf] [--version]", appName)
|
||||||
f.PrintDefaults()
|
f.PrintDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
f.StringVarP(&f.DumpJSON, "dumpjson", "j", "",
|
f.StringVarP(&f.DumpJSON, "dumpjson", "j", "",
|
||||||
"This debug option prints a json payload and exits. See man page for more info.")
|
"This debug option prints a json payload and exits. See man page for more info.")
|
||||||
f.StringVarP(&f.ConfigFile, "config", "c", DefaultConfFile, "Poller config file path.")
|
f.StringVarP(&f.ConfigFile, "config", "c", DefaultConfFile, "Poller config file path.")
|
||||||
|
|
@ -74,17 +89,16 @@ func (f *Flag) Parse(args []string) {
|
||||||
|
|
||||||
// Run invokes all the application logic and routines.
|
// Run invokes all the application logic and routines.
|
||||||
func (u *UnifiPoller) Run() (err error) {
|
func (u *UnifiPoller) Run() (err error) {
|
||||||
if u.Flag.DumpJSON != "" {
|
|
||||||
return u.DumpJSONPayload()
|
|
||||||
}
|
|
||||||
if u.Config.Debug {
|
if u.Config.Debug {
|
||||||
log.SetFlags(log.Lshortfile | log.Lmicroseconds | log.Ldate)
|
log.SetFlags(log.Lshortfile | log.Lmicroseconds | log.Ldate)
|
||||||
u.LogDebugf("Debug Logging Enabled")
|
u.LogDebugf("Debug Logging Enabled")
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[INFO] UniFi Poller v%v Starting Up! PID: %d", Version, os.Getpid())
|
log.Printf("[INFO] UniFi Poller v%v Starting Up! PID: %d", Version, os.Getpid())
|
||||||
if err = u.GetUnifi(); err != nil {
|
if err = u.GetUnifi(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
u.Logf("Polling UniFi Controller at %s v%s as user %s. Sites: %v",
|
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)
|
u.Config.UnifiBase, u.Unifi.ServerVersion, u.Config.UnifiUser, u.Config.Sites)
|
||||||
|
|
||||||
|
|
@ -149,5 +163,6 @@ func (u *UnifiPoller) GetUnifi() (err error) {
|
||||||
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()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue