SaltStack事件驱动(3) – BEACONS

到目前为止我们已经学习如何通过事件总线监控与salt相关的事件,以及激活一些其它的事件。这时候你可能会想“既然我已经设置了一个能监控和实时反馈事件的动态通信设施,那么我肯定可以利用它来监听其它事情,如系统登录,硬盘使用和数据库服务”。而beacons就是用来做这样的事情的。
beacons让你能够监控与salt无关的事情以及触发事件。beacon系统允许minion与各种系统进程挂钩并持续监控进程。当监控的系统进程活动发生时,minion就发送一个事件到salt事件总线。
salt beacons目前能对许多系统活动进行监控和发送事件,包括:

  • 文件系统变动
  • 系统负载
  • 服务状态
  • shell活动,如用户登录
  • 网络和硬盘使用情况
  • 激活一个beacon

    salt beacons的激活不需要对监控的系统进程进行任何更改,一切配置都可以使用salt来做。
    在minion的配置文件中增加如下配置:

    1. beacons:
    2.   inotify:
    3.     home/user/importantfile:
    4.       mask:
    5.         - modify

    beacon监控间隔

    beacons默认以1秒的间隔监控。可以增加一个interval参数来设置一个不同的间隔。如下是设置了5和10秒的间隔:

    1. beacons:
    2.   inotify:
    3.     /etc/httpd/conf.d: {}
    4.     /opt: {}
    5.     interval: 5
    6.   load:
    7.     - 1m:
    8.       - 0.0
    9.       - 2.0
    10.     - 5m:
    11.       - 0.0
    12.       - 1.5
    13.     - 15m:
    14.       - 0.1
    15.       - 1.0
    16.     - 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:

    1. vagrant ssh master

    在minion1安装python-pyinotify:

    1. sudo salt 'minion1' pkg.install python-pyinotify

    输出类似如下:

    1. vagrant@saltmaster:~$ sudo salt 'minion1' pkg.install python-pyinotify
    2. minion1:
    3.     ----------
    4.     python-pyinotify:
    5.         ----------
    6.         new:
    7.             0.9.4-1build1
    8.         old:
    9.     python2.7-pyinotify:
    10.         ----------
    11.         new:
    12.             1
    13.         old:

    我们很快就会生成一个事件,在master启动一个event runner并保持登录:

    1. salt-run state.event pretty=True

    让它在终端中运行并继续。

    设置一个beacon

    打开另一个终端进入salt-vagrant-demo目录,ssh进minion1:

    1. vagrant ssh minion1

    编辑minion1的/etc/salt/minion文件,在底部添加如下内容:

    1. beacons:
    2.   inotify:
    3.     /home/vagrant/importantfile:
    4.       mask:
    5.         - modify

    保存文件重启salt minion服务:

    1. sudo service salt-minion restart

    现在beacon已经激活。下面我们创建将要监控的文件。在/home/vagrant/目录创建importantfile:

    1. touch importantfile
    2. echo "some content" > importantfile

    回到salt master刚才运行event runnner的终端,你应该会看到如下输出:

    1. salt/beacon/minion1/inotify//home/vagrant/importantfile {
    2.     "_stamp": "2016-02-03T22:32:09.592113",
    3.     "data": {
    4.         "change": "IN_MODIFY",
    5.         "id": "minion1",
    6.         "path": "/home/vagrant/importantfile"
    7.     },
    8.     "tag": "salt/beacon/minion1/inotify//home/vagrant/importantfile"
    9. }

    记得event runner必须在文件被更改前启动,否则你不会看到事件。

    标签:SaltStack 发布于:2019-11-20 11:21:23