text and comment updates.
This commit is contained in:
parent
b65e9122ca
commit
9427980ae4
|
|
@ -63,10 +63,10 @@ too much opinion. If you want to provide a way to do something, please also prov
|
|||
any alternatives you're aware of. If you're not sure, just open an issue and we can
|
||||
hash it out. I'm reasonable.
|
||||
|
||||
## Unifi Library
|
||||
## UniFi Library
|
||||
|
||||
If you're trying to fix something in the unifi data collection (ie. you got an
|
||||
If you're trying to fix something in the UniFi data collection (ie. you got an
|
||||
unmarshal error, or you want to add something I didn't include) then you
|
||||
should look at the [unifi library](https://github.com/golift/unifi). All the
|
||||
should look at the [UniFi library](https://github.com/golift/unifi). All the
|
||||
data collection and export code lives there. Contributions and Issues are welcome
|
||||
on that code base as well.
|
||||
|
|
|
|||
4
Makefile
4
Makefile
|
|
@ -1,10 +1,10 @@
|
|||
# This Makefile is written as generic as possible.
|
||||
# Setting these variables and creating the necesarry paths in your github repo will make this file work.
|
||||
# Setting these variables and creating the necesarry paths in your GitHub repo will make this file work.
|
||||
#
|
||||
BINARY:=unifi-poller
|
||||
URL:=https://github.com/davidnewhall/$(BINARY)
|
||||
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.
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ Find them at [Grafana.com](https://grafana.com/dashboards?search=unifi-poller).
|
|||
|
||||
DESCRIPTION
|
||||
---
|
||||
Unifi-Poller is a small Golang application that runs on Windows, macOS, Linux or
|
||||
UniFi Poller is a small Golang application that runs on Windows, macOS, Linux or
|
||||
Docker. It polls a UniFi controller every 30 seconds for measurements and stores
|
||||
the data in an Influx database. See the example configuration file for more
|
||||
examples and default configurations.
|
||||
|
|
@ -55,7 +55,7 @@ CONFIGURATION
|
|||
* Possible formats: `XML`, `JSON`, `TOML`, `YAML`
|
||||
|
||||
The config file can be written in four different syntax formats. The application
|
||||
decides which one to used based on the file's name. If it contains `.xml` it will
|
||||
decides which one to use based on the file's name. If it contains `.xml` it will
|
||||
be parsed as XML. The same goes for `.json` and `.yaml`. If the filename contains
|
||||
none of these strings, then it is parsed as the default format, TOML. This option
|
||||
is provided so the application can be easily adapted to any environment.
|
||||
|
|
@ -149,3 +149,4 @@ LOCATION
|
|||
---
|
||||
* UniFi Poller: [https://github.com/davidnewhall/unifi-poller](https://github.com/davidnewhall/unifi-poller)
|
||||
* UniFi Library: [https://github.com/golift/unifi](https://github.com/golift/unifi)
|
||||
* Grafana Dashboards: [https://grafana.com/dashboards?search=unifi-poller](https://grafana.com/dashboards?search=unifi-poller)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class UnifiPoller < Formula
|
|||
def caveats
|
||||
s = <<-EOS
|
||||
This application will not work until the config file has authentication
|
||||
information for a Unifi Controller and an Influx Database. Edit the config
|
||||
information for a UniFi Controller and an Influx Database. Edit the config
|
||||
file at #{etc}/unifi-poller/up.conf then start the application with
|
||||
brew services start unifi-poller ~ log file: #{var}/log/unifi-poller.log
|
||||
The manual explains the config file options: man unifi-poller
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Sytemd service unit for unifi-poller.
|
||||
|
||||
[Unit]
|
||||
Description=Unifi Poller - Stores Unifi Metrics in InfluxDB
|
||||
Description=UniFi Poller - Stores UniFi Metrics in InfluxDB
|
||||
After=network.target
|
||||
Requires=network.target
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ type Asset interface {
|
|||
Points() ([]*influx.Point, error)
|
||||
}
|
||||
|
||||
// UnifiPoller contains the application startup data, and auth info for unifi & influx.
|
||||
// UnifiPoller contains the application startup data, and auth info for UniFi & Influx.
|
||||
type UnifiPoller struct {
|
||||
ConfigFile string
|
||||
DumpJSON string
|
||||
|
|
@ -40,7 +40,7 @@ type UnifiPoller struct {
|
|||
*Config
|
||||
}
|
||||
|
||||
// Metrics contains all the data from the controller and an influx endpoint to send them to.
|
||||
// Metrics contains all the data from the controller and an influx endpoint to send it to.
|
||||
type Metrics struct {
|
||||
unifi.Sites
|
||||
unifi.Clients
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// DumpJSONPayload prints raw json from the Unifi Controller.
|
||||
// DumpJSONPayload prints raw json from the UniFi Controller.
|
||||
func (u *UnifiPoller) DumpJSONPayload() (err error) {
|
||||
u.Quiet = true
|
||||
u.Unifi, err = unifi.NewUnifi(u.UnifiUser, u.UnifiPass, u.UnifiBase, u.VerifySSL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(os.Stderr, "[INFO] Authenticated to Unifi Controller @", u.UnifiBase, "as user", u.UnifiUser)
|
||||
fmt.Fprintln(os.Stderr, "[INFO] Authenticated to UniFi Controller @", u.UnifiBase, "as user", u.UnifiUser)
|
||||
if err := u.CheckSites(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -51,7 +51,7 @@ func (u *UnifiPoller) dumpSitesJSON(path, name string, sites []unifi.Site) error
|
|||
return nil
|
||||
}
|
||||
|
||||
// PrintRawAPIJSON prints the raw json for a user-provided path on a Unifi Controller.
|
||||
// PrintRawAPIJSON prints the raw json for a user-provided path on a UniFi Controller.
|
||||
func (u *UnifiPoller) PrintRawAPIJSON(apiPath string) error {
|
||||
body, err := u.GetJSON(apiPath)
|
||||
fmt.Println(string(body))
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ func (u *UnifiPoller) Run() (err error) {
|
|||
log.SetFlags(log.Lshortfile | log.Lmicroseconds | log.Ldate)
|
||||
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 {
|
||||
return err
|
||||
|
|
@ -81,7 +81,7 @@ func (u *UnifiPoller) Run() (err error) {
|
|||
return u.PollController()
|
||||
}
|
||||
|
||||
// GetInfluxDB returns an influxdb interface.
|
||||
// GetInfluxDB returns an InfluxDB interface.
|
||||
func (u *UnifiPoller) GetInfluxDB() (err error) {
|
||||
u.Client, err = influx.NewHTTPClient(influx.HTTPConfig{
|
||||
Addr: u.InfluxURL,
|
||||
|
|
@ -95,7 +95,7 @@ func (u *UnifiPoller) GetInfluxDB() (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
// GetUnifi returns a Unifi controller interface.
|
||||
// GetUnifi returns a UniFi controller interface.
|
||||
func (u *UnifiPoller) GetUnifi() (err error) {
|
||||
// Create an authenticated session to the Unifi Controller.
|
||||
u.Unifi, err = unifi.NewUnifi(u.UnifiUser, u.UnifiPass, u.UnifiBase, u.VerifySSL)
|
||||
|
|
@ -108,10 +108,10 @@ func (u *UnifiPoller) GetUnifi() (err error) {
|
|||
if err != nil {
|
||||
v.ServerVersion = "unknown"
|
||||
}
|
||||
u.Logf("Authenticated to Unifi Controller at %s version %s as user %s", u.UnifiBase, v.ServerVersion, u.UnifiUser)
|
||||
u.Logf("Authenticated to UniFi Controller at %s version %s as user %s", u.UnifiBase, v.ServerVersion, u.UnifiUser)
|
||||
if err = u.CheckSites(); err != nil {
|
||||
return err
|
||||
}
|
||||
u.Logf("Polling Unifi Controller Sites: %v", u.Sites)
|
||||
u.Logf("Polling UniFi Controller Sites: %v", u.Sites)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,8 @@ FIRST:
|
|||
return nil
|
||||
}
|
||||
|
||||
// PollController runs forever, polling unifi, and pushing to influx.
|
||||
// PollController runs forever, polling UniFi, and pushing to influx.
|
||||
// This is started by Run() after everything checks out.
|
||||
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))
|
||||
|
|
@ -77,7 +78,7 @@ func (u *UnifiPoller) PollController() error {
|
|||
i, _ := p.Fields()
|
||||
fieldcount += len(i)
|
||||
}
|
||||
u.Logf("Unifi Measurements Recorded. Sites: %d, Clients: %d, "+
|
||||
u.Logf("UniFi Measurements Recorded. Sites: %d, Clients: %d, "+
|
||||
"Wireless APs: %d, Gateways: %d, Switches: %d, Points: %d, Fields: %d",
|
||||
len(m.Sites), len(m.Clients), len(m.UAPs), len(m.USGs), len(m.USWs), pointcount, fieldcount)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue