到目前为止我们已经学习如何通过事件总线监控与salt相关的事件,以及激活一些其它的事件。这时候你可能会想“既然我已经设置了一个能监控和实时反馈事件的动态通信设施,那么我肯定可以利用它来监听其它事情,如系统登录,硬盘使用和数据库服务”。而beacons就是用来做这样的事情的。
beacons让你能够监控与salt无关的事情以及触发事件。beacon系统允许minion与各种系统进程挂钩并持续监控进程。当监控的系统进程活动发生时,minion就发送一个事件到salt事件总线。
salt beacons目前能对许多系统活动进行监控和发送事件,包括:
salt beacons的激活不需要对监控的系统进程进行任何更改,一切配置都可以使用salt来做。
在minion的配置文件中增加如下配置:
beacons默认以1秒的间隔监控。可以增加一个interval参数来设置一个不同的间隔。如下是设置了5和10秒的间隔:
如果一个beacon的更改可能引起重新触发这个beacon的话,设置disable_during_state_run为True以避免循环事件发生。
我们准备增加一个beacon来监控一个文件的更改。要配置这个,需要使用inotify beacon和安装python-pyinotify包。因为salt minions没有这个包,首先我们使用salt来安装它。
增加命令行终端进入salt-vagrant-demo目录,ssh到master:
在minion1安装python-pyinotify:
输出类似如下:
我们很快就会生成一个事件,在master启动一个event runner并保持登录:
让它在终端中运行并继续。
打开另一个终端进入salt-vagrant-demo目录,ssh进minion1:
编辑minion1的/etc/salt/minion文件,在底部添加如下内容:
保存文件重启salt minion服务:
现在beacon已经激活。下面我们创建将要监控的文件。在/home/vagrant/目录创建importantfile:
回到salt master刚才运行event runnner的终端,你应该会看到如下输出:
记得event runner必须在文件被更改前启动,否则你不会看到事件。