到目前为止我们已经学习如何通过事件总线监控与salt相关的事件,以及激活一些其它的事件。这时候你可能会想“既然我已经设置了一个能监控和实时反馈事件的动态通信设施,那么我肯定可以利用它来监听其它事情,如系统登录,硬盘使用和数据库服务”。而beacons就是用来做这样的事情的。
beacons让你能够监控与salt无关的事情以及触发事件。beacon系统允许minion与各种系统进程挂钩并持续监控进程。当监控的系统进程活动发生时,minion就发送一个事件到salt事件总线。
salt beacons目前能对许多系统活动进行监控和发送事件,包括:
激活一个beacon
salt beacons的激活不需要对监控的系统进程进行任何更改,一切配置都可以使用salt来做。
在minion的配置文件中增加如下配置:
- beacons:
- inotify:
- home/user/importantfile:
- mask:
- – modify
beacon监控间隔
beacons默认以1秒的间隔监控。可以增加一个interval参数来设置一个不同的间隔。如下是设置了5和10秒的间隔:
- beacons:
- inotify:
- /etc/httpd/conf.d: {}
- /opt: {}
- interval: 5
- load:
- – 1m:
- – 0.0
- – 2.0
- – 5m:
- – 0.0
- – 1.5
- – 15m:
- – 0.1
- – 1.0
- – interval: 10
如果一个beacon的更改可能引起重新触发这个beacon的话,设置disable_during_state_run为True以避免循环事件发生。
增加beacon
我们准备增加一个beacon来监控一个文件的更改。要配置这个,需要使用inotify beacon和安装python-pyinotify包。因为salt minions没有这个包,首先我们使用salt来安装它。
安装pyinotify和启动event runner
增加命令行终端进入salt-vagrant-demo目录,ssh到master:
- vagrant ssh master
在minion1安装python-pyinotify:
- sudo salt ‘minion1’ pkg.install python-pyinotify
输出类似如下:
- vagrant@saltmaster:~$ sudo salt ‘minion1’ pkg.install python-pyinotify
- minion1:
- ———-
- python-pyinotify:
- ———-
- new:
- 0.9.4-1build1
- old:
- python2.7-pyinotify:
- ———-
- new:
- 1
- old:
我们很快就会生成一个事件,在master启动一个event runner并保持登录:
- salt-run state.event pretty=True
让它在终端中运行并继续。
设置一个beacon
打开另一个终端进入salt-vagrant-demo目录,ssh进minion1:
- vagrant ssh minion1
编辑minion1的/etc/salt/minion文件,在底部添加如下内容:
- beacons:
- inotify:
- /home/vagrant/importantfile:
- mask:
- – modify
保存文件重启salt minion服务:
- sudo service salt-minion restart
现在beacon已经激活。下面我们创建将要监控的文件。在/home/vagrant/目录创建importantfile:
- touch importantfile
- echo "some content" > importantfile
回到salt master刚才运行event runnner的终端,你应该会看到如下输出:
- salt/beacon/minion1/inotify//home/vagrant/importantfile {
- "_stamp": "2016-02-03T22:32:09.592113",
- "data": {
- "change": "IN_MODIFY",
- "id": "minion1",
- "path": "/home/vagrant/importantfile"
- },
- "tag": "salt/beacon/minion1/inotify//home/vagrant/importantfile"
- }
记得event runner必须在文件被更改前启动,否则你不会看到事件。