A multi-server monitoring system built on top of Salt using Django.
The project currently isn't much more than proof-of-concept. I'm interested in exploring its usefulness as both an alerting system like monit and a monitoring system like munin (perhaps using Graphite's whisper database).
It's expected that you'll run this on the same server as the Salt master.
To bootstrap the project:
virtualenv salmon
source salmon/bin/activate
pip install salmon
salmon init
salmon upgrade
Fire up the web server with:
salmon start
Now create a config file for your checks. There is a commented example in the repo. Store this in the same directory as your conf.py
file (default: ~/.salmon/checks.yaml
).
Once you have your checks defined, you can run manage.py run_checks
periodically with cron
and view the status at http://localhost:9000
.
For security reasons, you shouldn't run this as root
on your server. Instead, use (or create) a less privileged user and modify your Salt master config to only provide access to the specific functions it needs to check. For example, you could create /etc/salt/master.d/monitor_acl.conf
with the following contents:
client_acl:
youruser:
- '*':
- test.ping
- service.status
- disk.usage
- 'ps.*'
- file.check_hash
Be sure to restart the salt-master
for configuration changes to take effect. For more details, read the docs on Salt's client_acl.