Rename a few things.
This commit is contained in:
parent
53602f8084
commit
8e9055e172
|
|
@ -15,6 +15,8 @@
|
|||
*~
|
||||
/package_build_*
|
||||
/release
|
||||
MANUAL
|
||||
MANUAL.html
|
||||
README
|
||||
README.html
|
||||
/unifi-poller_manual.html
|
||||
|
|
|
|||
17
Makefile
17
Makefile
|
|
@ -7,7 +7,6 @@ MAINT=David Newhall II <david at sleepers dot pro>
|
|||
DESC=This daemon polls a UniFi controller at a short interval and stores the collected measurements in an Influx Database.
|
||||
GOLANGCI_LINT_ARGS=--enable-all -D gochecknoglobals
|
||||
PACKAGE:=./cmd/$(BINARY)
|
||||
LIBRARY:=./pkg/$(BINARY)
|
||||
DOCKER_REPO=golift
|
||||
MD2ROFF_BIN=github.com/github/hub/md2roff-bin
|
||||
|
||||
|
|
@ -46,9 +45,9 @@ clean:
|
|||
man: $(BINARY).1.gz
|
||||
$(BINARY).1.gz: md2roff
|
||||
# Building man page. Build dependency first: md2roff
|
||||
go run $(MD2ROFF_BIN) --manual $(BINARY) --version $(VERSION) --date "$$(date)" cmd/$(BINARY)/README.md
|
||||
gzip -9nc cmd/$(BINARY)/README > $(BINARY).1.gz
|
||||
mv cmd/$(BINARY)/README.html $(BINARY)_manual.html
|
||||
go run $(MD2ROFF_BIN) --manual $(BINARY) --version $(VERSION) --date "$$(date)" examples/MANUAL.md
|
||||
gzip -9nc examples/MANUAL > $(BINARY).1.gz
|
||||
mv examples/MANUAL.html $(BINARY)_manual.html
|
||||
|
||||
md2roff:
|
||||
go get $(MD2ROFF_BIN)
|
||||
|
|
@ -63,23 +62,23 @@ README.html: md2roff
|
|||
|
||||
build: $(BINARY)
|
||||
$(BINARY):
|
||||
go build -o $(BINARY) -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE)
|
||||
go build -o $(BINARY) -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE)
|
||||
|
||||
linux: $(BINARY).linux
|
||||
$(BINARY).linux:
|
||||
# Building linux binary.
|
||||
GOOS=linux go build -o $(BINARY).linux -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE)
|
||||
GOOS=linux go build -o $(BINARY).linux -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE)
|
||||
|
||||
macos: $(BINARY).macos
|
||||
$(BINARY).macos:
|
||||
# Building darwin binary.
|
||||
GOOS=darwin go build -o $(BINARY).macos -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE)
|
||||
GOOS=darwin go build -o $(BINARY).macos -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE)
|
||||
|
||||
exe: $(BINARY).exe
|
||||
windows: $(BINARY).exe
|
||||
$(BINARY).exe:
|
||||
# Building windows binary.
|
||||
GOOS=windows go build -o $(BINARY).exe -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE)
|
||||
GOOS=windows go build -o $(BINARY).exe -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/unifipoller.Version=$(VERSION)" $(PACKAGE)
|
||||
|
||||
# Packages
|
||||
|
||||
|
|
@ -148,7 +147,7 @@ $(BINARY).rb: v$(VERSION).tar.gz.sha256
|
|||
# Run code tests and lint.
|
||||
test: lint
|
||||
# Testing.
|
||||
go test -race -covermode=atomic $(PACKAGE) $(LIBRARY)
|
||||
go test -race -covermode=atomic ./...
|
||||
lint:
|
||||
# Checking lint.
|
||||
golangci-lint run $(GOLANGCI_LINT_ARGS)
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ means, if you wanted to do something like make telegraf collect your data instea
|
|||
of UniFi Poller you can achieve that with a little bit of Go code. You could write
|
||||
a small app that acts as a telegraf input plugin using the [unifi](https://github.com/golift/unifi)
|
||||
library to grab the data from your controller. As a bonus, all of the code in UniFi Poller is
|
||||
[also a library](https://godoc.org/github.com/davidnewhall/unifi-poller/pkg/unifi-poller)
|
||||
[also a library](https://godoc.org/github.com/davidnewhall/unifi-poller/unifipoller)
|
||||
and can be used in other projects.
|
||||
|
||||
# What now...
|
||||
|
|
|
|||
|
|
@ -1,29 +1,14 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
unifipoller "github.com/davidnewhall/unifi-poller/pkg/unifi-poller"
|
||||
"github.com/davidnewhall/unifi-poller/unifipoller"
|
||||
)
|
||||
|
||||
// Keep it simple.
|
||||
func main() {
|
||||
log.SetFlags(log.LstdFlags)
|
||||
if err := run(); err != nil {
|
||||
if err := unifipoller.Start(); err != nil {
|
||||
log.Fatalln("[ERROR]", err)
|
||||
}
|
||||
}
|
||||
|
||||
func run() error {
|
||||
unifi := &unifipoller.UnifiPoller{}
|
||||
if unifi.ParseFlags(os.Args[1:]); unifi.ShowVer {
|
||||
fmt.Printf("unifi-poller v%s\n", unifipoller.Version)
|
||||
return nil // don't run anything else w/ version request.
|
||||
}
|
||||
if err := unifi.GetConfig(); err != nil {
|
||||
unifi.Flag.Usage()
|
||||
return err
|
||||
}
|
||||
return unifi.Run()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,22 @@ import (
|
|||
yaml "gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
// Start begins the application from a CLI.
|
||||
// Parses flags, parses config and executes Run().
|
||||
func Start() error {
|
||||
log.SetFlags(log.LstdFlags)
|
||||
up := &UnifiPoller{}
|
||||
if up.ParseFlags(os.Args[1:]); up.ShowVer {
|
||||
fmt.Printf("unifi-poller v%s\n", Version)
|
||||
return nil // don't run anything else w/ version request.
|
||||
}
|
||||
if err := up.GetConfig(); err != nil {
|
||||
up.Flag.Usage()
|
||||
return err
|
||||
}
|
||||
return up.Run()
|
||||
}
|
||||
|
||||
// ParseFlags runs the parser.
|
||||
func (u *UnifiPoller) ParseFlags(args []string) {
|
||||
u.Flag = flag.NewFlagSet("unifi-poller", flag.ExitOnError)
|
||||
|
|
@ -71,21 +87,18 @@ func (u *UnifiPoller) Run() (err error) {
|
|||
u.LogDebugf("Debug Logging Enabled")
|
||||
}
|
||||
log.Printf("[INFO] UniFi Poller v%v Starting Up! PID: %d", Version, os.Getpid())
|
||||
|
||||
if err = u.GetUnifi(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = u.GetInfluxDB(); err != nil {
|
||||
return err
|
||||
}
|
||||
if u.Lambda {
|
||||
metrics, err := u.CollectMetrics()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return u.ReportMetrics(metrics)
|
||||
switch {
|
||||
case u.Lambda:
|
||||
return u.CollectAndReport()
|
||||
default:
|
||||
return u.PollController()
|
||||
}
|
||||
return u.PollController()
|
||||
}
|
||||
|
||||
// GetInfluxDB returns an InfluxDB interface.
|
||||
|
|
@ -43,10 +43,7 @@ func (u *UnifiPoller) PollController() error {
|
|||
log.Println("[INFO] Everything checks out! Poller started, interval:", u.Interval.Round(time.Second))
|
||||
ticker := time.NewTicker(u.Interval.Round(time.Second))
|
||||
for range ticker.C {
|
||||
metrics, err := u.CollectMetrics()
|
||||
if err == nil {
|
||||
u.LogError(u.ReportMetrics(metrics), "reporting metrics")
|
||||
}
|
||||
_ = u.CollectAndReport()
|
||||
if u.MaxErrors >= 0 && u.errorCount > u.MaxErrors {
|
||||
return errors.Errorf("reached maximum error count, stopping poller (%d > %d)", u.errorCount, u.MaxErrors)
|
||||
}
|
||||
|
|
@ -54,6 +51,18 @@ func (u *UnifiPoller) PollController() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// CollectAndReport collects measurements and reports them to influxdb.
|
||||
// Can be called once or in a ticker loop.
|
||||
func (u *UnifiPoller) CollectAndReport() error {
|
||||
metrics, err := u.CollectMetrics()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = u.ReportMetrics(metrics)
|
||||
u.LogError(err, "reporting metrics")
|
||||
return err
|
||||
}
|
||||
|
||||
// CollectMetrics grabs all the measurements from a UniFi controller and returns them.
|
||||
// This also creates an InfluxDB writer, and returns error if that fails.
|
||||
func (u *UnifiPoller) CollectMetrics() (*Metrics, error) {
|
||||
Loading…
Reference in New Issue