A simple monitoring system built on top of Django.
The intent is to serve both as an alerting system like monit and a monitoring system like munin (using Graphite's whisper database).
The original release of Salmon was coupled to Salt and designed to monitor servers (Sal t Mon itor). As of v0.2.0, the system has been decoupled from Salt and ingests data via a simple HTTP interface.
To bootstrap the project:
virtualenv salmon source salmon/bin/activate pip install salmon salmon init salmon upgrade salmon collectstatic
Fire up the web server with:
salmon start
Metrics are sent in as JSON over HTTP. The format for a single metric:
{ "source": "test.example.com", "name": "load", "value": 0.1 }
Multiple metrics can be sent as an array:
[ {"source": "test.example.com", "name": "load", "value": 0.1}, {"source": "multi.example.com", "name": "cpu", "value": 55.5} ]
The API endpoint is /api/v1/metric/
. If your Salmon server lives at http://salmon.example.com, you can POST
to http://salmon.example.com/api/v1/metric/
. Pass in your API key as found in ~/.salmon/conf.py
for authentication. Using Curl, it would look something like this:
curl -i --user "<API_KEY>:" \ -H "Content-Type: application/json" \ -X POST \ -d '{"source": "test.example.com", "name": "load", "value": 0.1}' \ http://salmon.example.com/api/v1/metric/
- Setup the salt-stats states on your master or just grab the salmon returner
- Add the path to your Salmon install and API key (found in
~/.salmon/conf.py
) to your Salt Pillar. (salmon pillar example) - Add a schedule pillar. (schedule pillar example)
- Run
salt '*' saltutil.sync_all
Note: To use Salt's ps
module, psutil must be installed on
the minions. Ubuntu provides a python-psutil
package or it can be installed via pip install psutil
.