MCPcopy Index your code
hub / github.com/unpoller/unpoller

github.com/unpoller/unpoller @v3.3.1 sqlite

repository ↗ · DeepWiki ↗ · release v3.3.1 ↗
820 symbols 2,498 edges 136 files 445 documented · 54%
README

discord grafana pulls stars

unifi

Collect your UniFi controller data and report it to an InfluxDB instance, or export it for Prometheus collection. Twelve Grafana Dashboards included; with screenshots. Six for InfluxDB and six for Prometheus.

Installation

See the Documentation! We're willing to help if you have troubles. Open an Issue and we'll figure out how to get things working for you. You can also get help in the #unpoller channel on the GoLift Discord server. There is also a forum post you may use to get additional help.

Description

Ubiquiti makes networking devices like switches, gateways (routers) and wireless access points. They have a line of equipment named UniFi that uses a controller to keep stats and simplify network device configuration. This controller can be installed on Windows, macOS, FreeBSD, Linux or Docker. Ubiquiti also provides a dedicated hardware device called a CloudKey that runs the controller software. More recently they've developed the Dream Machine, and UnPoller can collect its data!

UnPoller is a small Golang application that runs on Windows, macOS, FreeBSD, Linux or Docker. In Influx-mode it polls a UniFi controller every 30 seconds for measurements and exports the data to an Influx database. In Prometheus mode the poller opens a web port and accepts Prometheus polling. It converts the UniFi Controller API data into Prometheus exports on the fly.

This application requires your controller to be running all the time. If you run a UniFi controller, there's no excuse not to install Influx or Prometheus, Grafana and this app. You'll have a plethora of data at your fingertips and the ability to craft custom graphs to slice the data any way you choose. Good luck!

Supported as of Poller v2.0.2, are Loki and the collection of UniFi events, alarms, anomalies and IDS data. This data can be exported to Loki or InfluxDB, or both!

Operation

You can control this app with puppet, chef, saltstack, homebrew or a simple bash script if you needed to. Packages are available for macOS, Linux, FreeBSD and Docker. It works just fine on Windows too.

What does it look like?

There are 12 total dashboards available; the 6 InfluxDB dashboards are very similar to the 6 Prometheus dashboards. On the documentation website you'll find screenshots of some of the dashboards.

Integrations

The following fine folks are providing their services, completely free! These service integrations are used for things like storage, building, compiling, distribution and documentation support. This project succeeds because of them. Thank you!

Copyright & License

  • Copyright © 2018-2020 David Newhall II.
  • See LICENSE for license information.

Extension points exported contracts — how you extend this code

Logger (Interface)
Logger is passed into input packages so they may write logs. [11 implementers]
pkg/poller/logger.go
OutputPlugin (Interface)
(no doc) [7 implementers]
pkg/poller/outputs.go
Collect (Interface)
Collect is passed into output packages so they may collect metrics to output. [3 implementers]
pkg/poller/outputs.go
Input (Interface)
Input plugins must implement this interface. [1 implementers]
pkg/poller/inputs.go
Discoverer (Interface)
Discoverer is an optional interface for inputs that can discover API endpoints. [1 implementers]
pkg/poller/inputs.go

Core symbols most depended-on inside this repo

send
called by 171
pkg/promunifi/report.go
String
called by 131
pkg/otelunifi/report.go
recordGauge
called by 114
pkg/otelunifi/report.go
LogDebugf
called by 74
pkg/inputunifi/updateweb.go
isDefaultSiteName
called by 64
pkg/inputunifi/collector.go
tag
called by 63
pkg/datadogunifi/points.go
reportGauge
called by 60
pkg/datadogunifi/report.go
metricNamespace
called by 58
pkg/datadogunifi/points.go

Shape

Method 540
Function 141
Struct 116
TypeAlias 13
Interface 9
FuncType 1

Languages

Go99%
Python1%

Modules by API surface

pkg/promunifi/integration_network.go36 symbols
pkg/promunifi/report.go32 symbols
pkg/datadogunifi/report.go32 symbols
pkg/promunifi/collector.go28 symbols
pkg/datadogunifi/integration_test.go28 symbols
pkg/promunifi/cache_test.go25 symbols
pkg/influxunifi/report.go24 symbols
pkg/inputunifi/collector.go22 symbols
pkg/poller/testutil.go20 symbols
pkg/poller/inputs.go20 symbols
pkg/poller/outputs.go19 symbols
pkg/webserver/plugins.go17 symbols

Dependencies from manifests, versioned

github.com/DataDog/datadog-go/v5v5.8.3 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/apapsch/go-jsonmerge/v2v2.0.0 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/flaticols/countrycodesv0.0.2 · 1×
github.com/go-logr/logrv1.4.3 · 1×
github.com/go-logr/stdrv1.2.2 · 1×

For agents

$ claude mcp add unpoller \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact