add config and logs to webserver
This commit is contained in:
parent
0805875183
commit
9d240364d9
|
|
@ -78,7 +78,7 @@ type totalsDPImap map[string]map[string]map[string]unifi.DPIData
|
|||
func (u *InfluxUnifi) batchClientDPI(r report, v interface{}, appTotal, catTotal totalsDPImap) {
|
||||
s, ok := v.(*unifi.DPITable)
|
||||
if !ok {
|
||||
u.Collector.LogErrorf("invalid type given to batchClientDPI: %T", v)
|
||||
u.LogErrorf("invalid type given to batchClientDPI: %T", v)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@ go 1.14
|
|||
require (
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/unifi-poller/poller v0.0.8-0.20200621214016-5d1ed3324a46
|
||||
github.com/unifi-poller/poller v0.0.8-0.20200626082958-a9a7092a5684
|
||||
github.com/unifi-poller/unifi v0.0.6-0.20200625090439-421046871a37
|
||||
github.com/unifi-poller/webserver v0.0.0-20200628115531-e071827d7598
|
||||
golift.io/cnfg v0.0.5
|
||||
)
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
|||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc=
|
||||
github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3 h1:k3/6a1Shi7GGCp9QpyYuXsMM6ncTOjCzOE9Fd6CDA+Q=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
|
|
@ -106,6 +108,8 @@ github.com/unifi-poller/poller v0.0.8-0.20200621110949-33f1a1454d10 h1:1rGP4ISFp
|
|||
github.com/unifi-poller/poller v0.0.8-0.20200621110949-33f1a1454d10/go.mod h1:+Ppksi2wBCrByJke0B0lTutxFtKfv1zx6L1haALBrN4=
|
||||
github.com/unifi-poller/poller v0.0.8-0.20200621214016-5d1ed3324a46 h1:OhbVj3VVgbpUMQFSwD0NszDsbEL7DdbTcJuU+p9DwIM=
|
||||
github.com/unifi-poller/poller v0.0.8-0.20200621214016-5d1ed3324a46/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
|
||||
github.com/unifi-poller/poller v0.0.8-0.20200626082958-a9a7092a5684 h1:r1B8GoI47czgGnQ7WY89qlSKqSE1d1pQmcLfdXVW/+Y=
|
||||
github.com/unifi-poller/poller v0.0.8-0.20200626082958-a9a7092a5684/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
|
||||
github.com/unifi-poller/promunifi v0.0.9-0.20200620104707-26208eb4336b h1:HgmbS5cKfvw3x0ie6IV/FfhxNtKwAvICKxXL7gg2sgM=
|
||||
github.com/unifi-poller/promunifi v0.0.9-0.20200620104707-26208eb4336b/go.mod h1:jOcYehhsOrs4ctswSKEqGuqSgVBpConaWmRYskycbUc=
|
||||
github.com/unifi-poller/unifi v0.0.5-0.20200619092006-d24c776a42f5/go.mod h1:L1kMRH2buZhB31vZnRC1im7Tk/4uD3ET4biwl2faYy8=
|
||||
|
|
@ -114,7 +118,10 @@ github.com/unifi-poller/unifi v0.0.5-0.20200621075746-253ccae7e106 h1:eKErSqWD65
|
|||
github.com/unifi-poller/unifi v0.0.5-0.20200621075746-253ccae7e106/go.mod h1:L1kMRH2buZhB31vZnRC1im7Tk/4uD3ET4biwl2faYy8=
|
||||
github.com/unifi-poller/unifi v0.0.6-0.20200625090439-421046871a37 h1:T2y8JWkjZd1vz2ZKu4vmmAk9s6PUwupuTldwhfww5xY=
|
||||
github.com/unifi-poller/unifi v0.0.6-0.20200625090439-421046871a37/go.mod h1:L1kMRH2buZhB31vZnRC1im7Tk/4uD3ET4biwl2faYy8=
|
||||
github.com/unifi-poller/webserver v0.0.0-20200628115531-e071827d7598 h1:Nmo1arOOln7V7YhjcwrT2AEFN0dl43tl5NgoNF4SgiA=
|
||||
github.com/unifi-poller/webserver v0.0.0-20200628115531-e071827d7598/go.mod h1:rlM8tRx7wCxqj4+6ZkuFVt2voFoAlHhS/XTrHd7T57s=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import (
|
|||
"crypto/tls"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
|
@ -13,9 +14,13 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
"github.com/unifi-poller/poller"
|
||||
"github.com/unifi-poller/unifi"
|
||||
"github.com/unifi-poller/webserver"
|
||||
"golift.io/cnfg"
|
||||
)
|
||||
|
||||
// PluginName is the name of this plugin.
|
||||
const PluginName = "influxdb"
|
||||
|
||||
const (
|
||||
defaultInterval = 30 * time.Second
|
||||
minimumInterval = 10 * time.Second
|
||||
|
|
@ -59,7 +64,7 @@ func init() { // nolint: gochecknoinits
|
|||
u := &InfluxUnifi{InfluxDB: &InfluxDB{}, LastCheck: time.Now()}
|
||||
|
||||
poller.NewOutput(&poller.Output{
|
||||
Name: "influxdb",
|
||||
Name: PluginName,
|
||||
Config: u.InfluxDB,
|
||||
Method: u.Run,
|
||||
})
|
||||
|
|
@ -75,24 +80,24 @@ func (u *InfluxUnifi) PollController() {
|
|||
for u.LastCheck = range ticker.C {
|
||||
metrics, err := u.Collector.Metrics(&poller.Filter{Name: "unifi"})
|
||||
if err != nil {
|
||||
u.Collector.LogErrorf("metric fetch for InfluxDB failed: %v", err)
|
||||
u.LogErrorf("metric fetch for InfluxDB failed: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
events, err := u.Collector.Events(&poller.Filter{Name: "unifi", Dur: interval})
|
||||
if err != nil {
|
||||
u.Collector.LogErrorf("event fetch for InfluxDB failed: %v", err)
|
||||
u.LogErrorf("event fetch for InfluxDB failed: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
report, err := u.ReportMetrics(metrics, events)
|
||||
if err != nil {
|
||||
// XXX: reset and re-auth? not sure..
|
||||
u.Collector.LogErrorf("%v", err)
|
||||
u.LogErrorf("%v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
u.Collector.Logf("UniFi Metrics Recorded. %v", report)
|
||||
u.Logf("UniFi Metrics Recorded. %v", report)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -100,12 +105,11 @@ func (u *InfluxUnifi) PollController() {
|
|||
func (u *InfluxUnifi) Run(c poller.Collect) error {
|
||||
var err error
|
||||
|
||||
if u.Config == nil || u.Disable {
|
||||
c.Logf("InfluxDB config missing (or disabled), InfluxDB output disabled!")
|
||||
if u.Collector = c; u.Config == nil || u.Disable {
|
||||
u.Logf("InfluxDB config missing (or disabled), InfluxDB output disabled!")
|
||||
return nil
|
||||
}
|
||||
|
||||
u.Collector = c
|
||||
u.setConfigDefaults()
|
||||
|
||||
u.influx, err = influx.NewHTTPClient(influx.HTTPConfig{
|
||||
|
|
@ -118,6 +122,10 @@ func (u *InfluxUnifi) Run(c poller.Collect) error {
|
|||
return err
|
||||
}
|
||||
|
||||
fake := *u.Config
|
||||
fake.Pass = strconv.FormatBool(fake.Pass != "")
|
||||
|
||||
webserver.UpdateOutput(&webserver.Output{Name: PluginName, Config: fake})
|
||||
u.PollController()
|
||||
|
||||
return nil
|
||||
|
|
@ -156,7 +164,7 @@ func (u *InfluxUnifi) setConfigDefaults() {
|
|||
func (u *InfluxUnifi) getPassFromFile(filename string) string {
|
||||
b, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
u.Collector.LogErrorf("Reading InfluxDB Password File: %v", err)
|
||||
u.LogErrorf("Reading InfluxDB Password File: %v", err)
|
||||
}
|
||||
|
||||
return strings.TrimSpace(string(b))
|
||||
|
|
@ -274,6 +282,6 @@ func (u *InfluxUnifi) switchExport(r report, v interface{}) {
|
|||
case *unifi.Anomaly:
|
||||
u.batchAnomaly(r, v)
|
||||
default:
|
||||
u.Collector.LogErrorf("invalid export type: %T", v)
|
||||
u.LogErrorf("invalid export type: %T", v)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
package influxunifi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/unifi-poller/webserver"
|
||||
)
|
||||
|
||||
// Logf logs a message.
|
||||
func (u *InfluxUnifi) Logf(msg string, v ...interface{}) {
|
||||
webserver.NewInputEvent(PluginName, PluginName, &webserver.Event{
|
||||
Ts: time.Now(),
|
||||
Msg: fmt.Sprintf(msg, v...),
|
||||
Tags: map[string]string{"type": "info"},
|
||||
})
|
||||
u.Collector.Logf(msg, v...)
|
||||
}
|
||||
|
||||
// LogErrorf logs an error message.
|
||||
func (u *InfluxUnifi) LogErrorf(msg string, v ...interface{}) {
|
||||
webserver.NewInputEvent(PluginName, PluginName, &webserver.Event{
|
||||
Ts: time.Now(),
|
||||
Msg: fmt.Sprintf(msg, v...),
|
||||
Tags: map[string]string{"type": "error"},
|
||||
})
|
||||
u.Collector.LogErrorf(msg, v...)
|
||||
}
|
||||
|
||||
// LogDebugf logs a debug message.
|
||||
func (u *InfluxUnifi) LogDebugf(msg string, v ...interface{}) {
|
||||
webserver.NewInputEvent(PluginName, PluginName, &webserver.Event{
|
||||
Ts: time.Now(),
|
||||
Msg: fmt.Sprintf(msg, v...),
|
||||
Tags: map[string]string{"type": "debug"},
|
||||
})
|
||||
u.Collector.LogDebugf(msg, v...)
|
||||
}
|
||||
|
|
@ -60,7 +60,7 @@ func (u *InfluxUnifi) batchSite(r report, s *unifi.Site) {
|
|||
func (u *InfluxUnifi) batchSiteDPI(r report, v interface{}) {
|
||||
s, ok := v.(*unifi.DPITable)
|
||||
if !ok {
|
||||
u.Collector.LogErrorf("invalid type given to batchSiteDPI: %T", v)
|
||||
u.LogErrorf("invalid type given to batchSiteDPI: %T", v)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue