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
.