doc updates. fix docker build.
This commit is contained in:
parent
d7a1b65885
commit
11eda36692
|
|
@ -24,8 +24,8 @@ before_install:
|
||||||
install:
|
install:
|
||||||
- rvm 2.0.0 do gem install --no-document fpm
|
- rvm 2.0.0 do gem install --no-document fpm
|
||||||
- dep ensure
|
- dep ensure
|
||||||
- docker build -t unifi-poller .
|
- make docker
|
||||||
- docker run -d --name unifi-poller unifi-poller | tee docker_id
|
- docker run -d --name unifi-poller golift/unifi-poller | tee docker_id
|
||||||
script:
|
script:
|
||||||
# Once we figure out how to keep it running we can remove the -a in ps args.
|
# Once we figure out how to keep it running we can remove the -a in ps args.
|
||||||
- docker ps -a | grep -q unifi-poller
|
- docker ps -a | grep -q unifi-poller
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,72 @@
|
||||||
|
_This doc is far from complete._
|
||||||
|
|
||||||
|
# Build Pipeline
|
||||||
|
|
||||||
|
Lets talk about how the software gets built for our users before we talk about
|
||||||
|
making changes to it.
|
||||||
|
|
||||||
|
## TravisCI
|
||||||
|
|
||||||
|
This repo is tested, built and deployed by [Travis-CI](https://travis-ci.org/davidnewhall/unifi-poller).
|
||||||
|
|
||||||
|
The [.travis.yml](.travis.yml) file in this repo coordinates the entire process.
|
||||||
|
As long as this document is kept up to date, this is what the travis file does:
|
||||||
|
|
||||||
|
- Creates a go-capable build environment on a Linux host, some debian variant.
|
||||||
|
- Install ruby-devel to get rubygems.
|
||||||
|
- Installs other build tools including rpm and fpm from rubygems.
|
||||||
|
- Starts docker, builds the docker container and runs it.
|
||||||
|
- Tests that the Docker container ran and produced expected output.
|
||||||
|
- Makes a release. `make release`: This does a lot of things, controlled by the [Makefile](Makefile).
|
||||||
|
- Runs go tests and go linters.
|
||||||
|
- Compiles the application binaries for Linux and macOS.
|
||||||
|
- Compiles a man page that goes into the packages.
|
||||||
|
- Creates rpm and deb packages using fpm.
|
||||||
|
- Puts the packages, gzipped binaries and a file containing the SHA256s of each asset into a release folder.
|
||||||
|
|
||||||
|
After the release is built and Docker image tested:
|
||||||
|
- Deploys the release assets to the tagged release on GitHub using an encrypted GitHub Token (api key).
|
||||||
|
- Runs [another script](scripts/formula-deploy.sh) to create and upload a Homebrew formula to [golift/homebrew-mugs](https://github.com/golift/homebrew-mugs).
|
||||||
|
- Uses an encrypted SSH key to upload the updated formula to the repo.
|
||||||
|
- Travis does nothing else with Docker; it just makes sure the thing compiles and runs.
|
||||||
|
|
||||||
|
### Homebrew
|
||||||
|
|
||||||
|
it's a mac thing.
|
||||||
|
|
||||||
|
[Homebrew](https://brew.sh) is all I use at home. Please don't break the homebrew
|
||||||
|
formula stuff; it took a lot of pain to get it just right. I am very interested
|
||||||
|
in how it works for you.
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
Docker is built automatically by Docker Cloud using the Dockerfile in the path
|
||||||
|
[init/docker/Dockerfile](init/docker/Dockerfile). Other than the Dockerfile, all
|
||||||
|
the configuration is done in the Cloud service under my personal account `golift`.
|
||||||
|
|
||||||
|
If you have need to change the Dockerfile, please clearly explain what problem your
|
||||||
|
changes are solving, and how it has been tested and validated. As far as I'm
|
||||||
|
concerned this file should never need to change again, but I'm not a Docker expert;
|
||||||
|
you're welcome to prove me wrong.
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
Make a pull request and tell me what you're fixing. Pretty simple. If I need to
|
||||||
|
I'll add more "rules." For now I'm happy to have help. Thank you!
|
||||||
|
|
||||||
|
## Wiki
|
||||||
|
|
||||||
|
**If you see typos, errors, omissions, etc, please fix them.**
|
||||||
|
|
||||||
|
At this point, the wiki is pretty solid. Please keep your edits brief and without
|
||||||
|
too much opinion. If you want to provide a way to do something, please also provide
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
data collection and export code lives there. Contributions and Issues are welcome
|
||||||
|
on that code base as well.
|
||||||
41
README.md
41
README.md
|
|
@ -13,7 +13,7 @@ device configuration. This controller can be installed on Windows, macOS and Lin
|
||||||
Ubiquiti also provides a dedicated hardware device called a
|
Ubiquiti also provides a dedicated hardware device called a
|
||||||
[CloudKey](https://www.ui.com/unifi/unifi-cloud-key/) that runs the controller software.
|
[CloudKey](https://www.ui.com/unifi/unifi-cloud-key/) that runs the controller software.
|
||||||
|
|
||||||
Unifi-Poller is a smaller application that runs on macOS, Linux or Docker. It
|
Unifi-Poller is a small application that runs on macOS, Linux or Docker. It
|
||||||
polls your controller every 30 seconds for metric data and stores that data in
|
polls your controller every 30 seconds for metric data and stores that data in
|
||||||
an Influx Database. A small setup with 2 APs, 1 switch, 1 gateway and 40 clients
|
an Influx Database. A small setup with 2 APs, 1 switch, 1 gateway and 40 clients
|
||||||
produces nearly 3000 fields (metrics).
|
produces nearly 3000 fields (metrics).
|
||||||
|
|
@ -28,6 +28,7 @@ graphs to slice the data any way you choose. Good luck!
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
[See the Wiki!](https://github.com/davidnewhall/unifi-poller/wiki/Installation)
|
[See the Wiki!](https://github.com/davidnewhall/unifi-poller/wiki/Installation)
|
||||||
|
We have a special place for [Docker Users](https://github.com/davidnewhall/unifi-poller/wiki/Docker).
|
||||||
|
|
||||||
# Backstory
|
# Backstory
|
||||||
|
|
||||||
|
|
@ -59,9 +60,35 @@ for making this dashboard; it gave me a fantastic start to making my own.
|
||||||
|
|
||||||
I've also created [another forum post](https://community.ubnt.com/t5/UniFi-Wireless/Unifi-Poller-Store-Unifi-Controller-Metrics-in-InfluxDB-without/td-p/2811951) you may use to get additional help.
|
I've also created [another forum post](https://community.ubnt.com/t5/UniFi-Wireless/Unifi-Poller-Store-Unifi-Controller-Metrics-in-InfluxDB-without/td-p/2811951) you may use to get additional help.
|
||||||
|
|
||||||
|
# Development
|
||||||
|
|
||||||
|
The "What now..." section below used to be a lot larger. I've received a lot of
|
||||||
|
support, feedback and assistance from the community. Many thanks! This app is
|
||||||
|
extremely stable with a tiny memory and cpu footprint. I imagine one day we'll
|
||||||
|
figure out how to make it run on a CloudKey device directly; once I have one
|
||||||
|
personally that will be my goal. In addition to stability, this app provides
|
||||||
|
an intuitive installation and configuration process. Maintenance is a breeze too.
|
||||||
|
|
||||||
|
I'm not a software engineer, I'm a a firm believer in operational excellence above
|
||||||
|
all else. To that end, this app shall remain easy, intuitive and highly adaptable.
|
||||||
|
I'm totally open to add more configuration options if someone raises a need or concern.
|
||||||
|
|
||||||
|
You can control this app with puppet, chef, saltstack, homebrew or a simple bash
|
||||||
|
script if you needed to. It's available for macOS, Linux and Docker. It comes with
|
||||||
|
a systemd service unit that allows you automatically start it up on most Linux
|
||||||
|
hosts. It probably works just fine on Windows too;
|
||||||
|
[let me know eh](https://github.com/davidnewhall/unifi-poller/wiki/Windows)?
|
||||||
|
|
||||||
|
The unifi data extraction is provided as an [external library](https://github.com/golift/unifi),
|
||||||
|
and you can import that code directly without futzing with this application. That
|
||||||
|
means, if you wanted to do something like make telegraf collect your data instead
|
||||||
|
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 available
|
||||||
|
[unifi](https://github.com/golift/unifi) library to grab the data from your controller.
|
||||||
|
|
||||||
# What now...
|
# What now...
|
||||||
|
|
||||||
- Are there other devices that need to be included?
|
### Are there other devices that need to be included?
|
||||||
|
|
||||||
I have: switch, router, access point. Three total, and the type structs are
|
I have: switch, router, access point. Three total, and the type structs are
|
||||||
likely missing data for variants of these devices. e.g. Some UAPs have more
|
likely missing data for variants of these devices. e.g. Some UAPs have more
|
||||||
|
|
@ -70,15 +97,7 @@ ports, some switches have 10Gb, etc. These are things I do not have data on
|
||||||
to write code for. If you have these devices, and want them graphed, open an
|
to write code for. If you have these devices, and want them graphed, open an
|
||||||
Issue and lets discuss.
|
Issue and lets discuss.
|
||||||
|
|
||||||
- Better Installation instructions.
|
### Radios, Frequencies, Interfaces, vAPs
|
||||||
|
|
||||||
If you're a nerd you can probably figure it out. I'd still like some pretty
|
|
||||||
pictures and maybe even a Twitch VOD. Update: The installation has been
|
|
||||||
simplified tremendously with the
|
|
||||||
[creation of binary packages](https://github.com/davidnewhall/unifi-poller/wiki/Installation).
|
|
||||||
More to come!
|
|
||||||
|
|
||||||
- Radios, Frequencies, Interfaces, vAPs
|
|
||||||
|
|
||||||
My access points only seem to have two radios, one interface and vAP per radio.
|
My access points only seem to have two radios, one interface and vAP per radio.
|
||||||
I'm not sure if the graphs, as-is, provide enough insight into APs with other
|
I'm not sure if the graphs, as-is, provide enough insight into APs with other
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue