doc updates. fix docker build.

This commit is contained in:
David Newhall II 2019-06-20 22:59:24 -07:00
parent d7a1b65885
commit 11eda36692
3 changed files with 107 additions and 16 deletions

View File

@ -24,8 +24,8 @@ before_install:
install:
- rvm 2.0.0 do gem install --no-document fpm
- dep ensure
- docker build -t unifi-poller .
- docker run -d --name unifi-poller unifi-poller | tee docker_id
- make docker
- docker run -d --name unifi-poller golift/unifi-poller | tee docker_id
script:
# Once we figure out how to keep it running we can remove the -a in ps args.
- docker ps -a | grep -q unifi-poller

72
CONTRIBUTING.md Normal file
View File

@ -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.

View File

@ -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
[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
an Influx Database. A small setup with 2 APs, 1 switch, 1 gateway and 40 clients
produces nearly 3000 fields (metrics).
@ -28,6 +28,7 @@ graphs to slice the data any way you choose. Good luck!
## 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
@ -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.
# 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...
- 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
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
Issue and lets discuss.
- Better Installation instructions.
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
### Radios, Frequencies, Interfaces, vAPs
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
@ -107,6 +126,6 @@ sites side-by-side. So easy! This screenshot barely does it justice.
## Copyright & License
- Copyright © 2016 Garrett Bjerkhoel.
- Copyright © 2018-2019 David Newhall II.
- See [LICENSE](LICENSE) for license information.
- Copyright © 2016 Garrett Bjerkhoel.
- Copyright © 2018-2019 David Newhall II.
- See [LICENSE](LICENSE) for license information.