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.