Skip to content

hverr/status-dashboard

Repository files navigation

Status Dashboard

Build Status

Status Dashboard is a highly configurable AngularJS application backed by a Go API to show information about multiple servers in a dasboard style way.

Features

  • Efficient
    • Machines only send information when someone has opened the dashboard.
    • No database or permanent file storage needed.
    • Only update requested information.
  • Dynamic
    • Add and remove widgets.
    • Reorder and resize widgets.
    • Add and remove columns and rows.
    • Can refresh as often as every second.
  • Persistent
    • Bookmark a layout in your browser.
  • Linux Widgets
    • Number of established TCP connections
    • Memory usage
    • Load average
    • Uptime
    • Network (up/down bandwidth)
  • Client-less widgets
    • Current date
    • Current time

Installation

Binaries (assets included) are available in the release section, or can be built manually.

Releases include 32-bit and 64-bit binaries for:

  • linux (client/server)
  • darwin (server)
  • windows (server)

Usage

See the systemd-scripts in the examples directory:

  • dashboard-server -c server_config.json
  • dashboard-client -c client_config.json

To get version information, run:

  • dashboard-server -version
  • dashboard-client -version

User Authentication

You can protect the dashboard using HTTP basic authentication by adding a dictionary of login, password pairs to the configuration file of the server.

{
    "users" : {
        "mylogin" : "supersecretpass"
    }
}

SSL

You can protect the application with SSL by using a reverse proxy such as nginx. A sample configuration file can be found in Dockerfile.nginx and nginx.conf.

If you're using a self-signed certificate or CA, specify the -ca root_ca_certificate_file option when starting the client. An example:

make docker # Docker that will run the dashboard
make nginx # Docker that will host the nginx proxy
make docker-run-server # Run the server in a docker
make nginx-run # Run nginx proxy
go client/main/*.go -c client/main/dev_ssl_config.json -ca examples/root_ca.pem

You can now browse to https://localhost:12443

Updating

You can automatically update the application using the -update flag. It will update the executable to the latest GitHub release.

$ dashboard-server -checkupdate
$ dashboard-server -update

Building

Building a binary for your platform is easiest using Docker on a Linux machine, or locally using the Makefile.

Using Docker

The Dockerfile for this repository contains everything to build the application binary. You can compile the binary for any platform supported by the Go cross compiler.

make docker # Create a Docker image named `status-dashboard`
make docker-build GOOS=yourplatform GOARCH=yourarchitecture # Create the binary
make docker-release # Make a release for some common platforms and architectures

Locally

Node, NPM and Gulp are needed to build the binary. The Makefile can be used to build the binaries.

npm install -g gulp
make
./dashboard-server
./dashboard-client

Development

The following dependencies are needed to build and run the application.

  • Node and NPM
  • Bower
  • Go with a working GOPATH

Get the project: go get https://github.com/hverr/status-dashboard

Server

Build and run the server

cd $GOPATH/src/github.com/hverr/status-dashboard/server
npm install
npm install -g bower
bower install
cd $GOPATH/src/github.com/hverr/status-dashboard/server/main
go run *.go -c dev_config.json -debug

Point your browser to http://localhost:8050/

Client

Build and run the client(s)

cd $GOPATH/src/github.com/hverr/status-dashboard/client/main
go run *.go -c dev_config.json -debug

Adding Widgets

To add widgets, you must implement several class in the following locations:

Screenshot

Screenshot