I'm starting a new project and considering using Ansible or Salt for deployment automation and, perhaps, more sophisticated orchestration (server management and federation).
With Salt I'm wondering if there's any integration between it and Graphite or Zenoss or Ganglia ... using the Salt 0mq connections to relay the data from the Salt "minions" to the monitoring/graphing database/collectors.
Has anyone else looked at this?
i used salt-stack for over 6 Month now to manage 40+ nodes.
in My current setup i use:
als this runs under CentOS 6.x
my expierience so far is that salt-stack is good to enroll everything. But as long term runing Daemon on the nodes, its not stable.
i have often problems with not reaching the master or memory bloating of on the salt-minions. This can be fixed with and easy workaround that you restart every 24hours/onceaweek the salt-minions.
but this problem in salt-minion makes it not usable to collect data over the 0mq Framework.
my current setup runs safe. I can enroll changes pretty quick with salt-stack and collectd on the nodes does the trick.
I think Salt or Ansible are not created for that task and I think they cannot be used to that purpose.
I am using Salt for several months and I didn't noticed of options of functions you want (in configs nor documentation). But I think you can "add" your requirements as Salt is written in python - if it is an option.
The easiest way is to order salt to install collectd which can collect data about the system (and has connectors to graphite)
EDIT: I found a project which implements monitoring using salt - salmon - take a look.
You may want to take a look at Sensu, it's a monitoring solution pluggable with a lots of community plugins, including graphite among others.
However Sensu uses another messaging queue to deliver messages, RabbitMQ. Maybe some coding work is needed, but you can try to replace one of the two messaging queue, since both of them should be using the AMQ protocol to exchange messages.
I recommend you look into two things: Salt Mine - http://docs.saltstack.com/topics/mine/ Salt Events - http://docs.saltstack.com/topics/event/index.html
If you combine these with your own returner configuration setup to store results in graphite, or any of the others you listed. You could conceivably use Salt to handle top down 'probing' and bottom up 'eventing'. I wouldn't be able to comment on the effectiveness of such a system, but in principle there appears to be the possibility.
I outlined my journey to sub-second-per-host nagios monitoring via the salt-mine and check_mk here: http://garthwaite.org/saltmine_check_mk_agent.html
The article walks through weeks of on and off tinkering to get it all working. I'll summarize the solution:
Create a custom check_mk module for all minions:
Set minion's mine interval to one minute:
Configure the monitoring server to pull all the minion's check_mk_agent output into a single json file, then configure check_mk to query that file instead of any network queries. All accomplished with the following script on the monitoring minion:
Update every minute:
Finally: Change the datasource for all nagios targets in /etc/check_mk/main.mk: