Open source (MIT) replacement for New Relic's deprecated server health monitoring solution, written in Golang. This will fire alerts and send emails when servers being monitored stop reporting or when their filesystems get too full.
- Intelligent alert lifecycle and processing. 1) Created 2) Ongoing 3) Closed.
- Alerts created when monitoring servers drop out
- Alerts created when filesystems on monitored servers go above threshold
- Send emails on alerts
- Lightweight with minimal configuration and setup. Only dependency is redis.
- HMAC auth + integrity checking to avoid other people sending you alerts
- Smooth, lightweight single-page-app (SPA) UI, styled with Bootswatch.
- Single-binary deployment, because golang
- Tested on Linux and macOS
- stateless golang app. you can spin up several behind a balancer.
- listens for updates from server agents
- provides api access to list servers and alerts
- provides web UI (a single page app) which pulls from the API endpoints and displays them nicely
- stateful service. only run one of these at once (until i add leader election)
- periodically poll redis for the latest server statuses, and intelligently create, maintain, and close alerts as events change
- handles notifications (currently email based) for alert state transitions
- run this on each server that needs to be monitored. periodically POSTs to API Server
- all state (servers, alerts, etc) is stored in redis. If you need this to scale, you can put a proxy in front of a pool of redis servers for durability + sharding.
If you install Go and Glide, after go get
ing this package and cd
ing into the folder, you can compile like this:
glide install
go build
Copy sample config file. This can be placed in /etc/healthapp/config.yaml
or any other path specified by CONFIG_FILE
env var, otherwise config.yaml
in the current directory.
cp config.sample.yaml config.yaml
To start API server:
./healthapp -serve
To start the alert processor:
./healthapp -alerter
To start slave agent:
./healthapp -agent
If you have fpm installed, you can build a .deb package using the following. You could even use quickdebrepo to host your own apt repositiory.
fpm -s dir -t deb -n healthapp -v 0.0.1 --prefix /opt/healthapp healthapp static
Once the resulting deb is installed, HealthApp will be installed to /opt/healthapp/healthapp
and will accept the arguments as above.
It's recommended you run the API Server behind a reverse proxy, eg apache or nginx, and use that to terminate SSL.
- Integrate with Iris for notifications, to support others than just email
- UI (CLI or web) for "forgetting" servers which don't exist anymore
- MIT licensed
- Open a GitHub issue or email me at joe@u13.net with any questions.
- PRs welcome