Recently, I use ansible to gather information periodically from thousands of servers(which already installed collectd to gather CPU, memory, disks, netowrking info) in our company.
For example: I need to get those information daily
- kernel version
- installed packages versions(JDK, docker, etc)
- running process info
- some commands output (lldp, docker ps, etc)
- some files content (cat /etc/some/config | grep word)
I use ansible shell module to execute those variant commands and parse the output into our inventory NOSQL.
By using ansible which use SSH/WINRM to access thousands servers seems inefficient.(which fine tune with more forks, enabled ControlMaster pipeline, etc).
I are trying to find a better way to replace ansible for those information gathering and parsing.
Below are some solutions which I am surveying.
facebook/osquery is flexible and powerful, but maybe not easy(comparing to bash script) to run a customized commands and parsing the output by writing an extension.
collectd with exec plugin to run customized scripts seems straightforward. in this way I need to deploy new scripts to all servers from day to day.
Are there some tools which is more suitable for such variant commands output gathering? and easy to deploy, reporting, or may with some dashboard and API for operation.
