【问题标题】:salt-master is not receiving scheduled job event fired on salt-minionsalt-master 没有收到在 salt-minion 上触发的预定作业事件
【发布时间】:2017-02-22 10:43:27
【问题描述】:

我想请你帮忙。我使用 saltstack 作为从属(minion)的作业调度程序,我希望能够看到在 minion 上触发的主作业事件。

我的设置

工作安排在 salt-master 上,使用给定仆从的支柱。支柱是:

schedule_returner: mongo
schedule:
  cmd:
    function: cmd.run
    args:
      - date +%s >> /tmp/job_runs
    minutes: 1
    maxrunning: 1

计划的作业在 minion 上执行没有任何问题。我可以在 mongodb 中看到返回的数据,并在我的虚拟文件 /tmp/job_runs 中看到新的时间戳。 minion/etc/salt/minion.d/_schedule.conf上的配置文件为:

schedule:
  __mine_interval: {enabled: true, function: mine.update, jid_include: true, maxrunning: 2, minutes: 60, return_job: false}
  cmd:
    args: [date +%s >> /tmp/job_runs]
    function: cmd.run
    maxrunning: 1
    minutes: 1

这个文件是生成的,我没有修改。

在奴才日志中我可以看到:

[DEBUG] SaltEvent PUB 套接字 URI: /var/run/salt/minion/minion_event_1fa42d8010_pub.ipc [调试] SaltEvent PULL 套接字 URI:/var/run/salt/minion/minion_event_1fa42d8010_pull.ipc [调试] 为路径初始化新的 IPCClient:/var/run/salt/minion/minion_event_1fa42d8010_pull.ipc [调试] 发送事件:tag = __schedule_return; data = {'fun_args': ['date +%s >> /tmp/job_runs'], 'jid': 'req', 'return': '', 'retcode': 0, 'success': True, 'schedule': 'cmd', 'cmd': '_return', 'pid': 10264, '_stamp': '2017-02-22T10:03:05.750874', '乐趣':'cmd.run','id':'vagrant.vm'} [调试] "salt" 的 Minion 正在处理事件标签 '__schedule_return'
[调试] schedule.handle_func:删除 /var/cache/salt/minion/proc/20170222100305532940 [DEBUG] LazyLoaded mongo.returner

现在我有兴趣收听带有标签__schedule_return 的那些事件。 在 minion 上,我可以运行以下命令:

wget https://raw.github.com/saltstack/salt/develop/tests/eventlisten.py
sudo python eventlisten.py -n minion

eventlisten.py 的输出是正确的,我可以看到这个事件。

现在我的问题是:有没有办法在 salt-master 上收听这些事件?

当我在 master 上运行几乎相同的命令时:

wget https://raw.github.com/saltstack/salt/develop/tests/eventlisten.py
sudo python eventlisten.py

我无法看到我计划的工作在 minion 上触发的那些事件。 我这样做的动机是我在我的主人上运行 saltpad,我希望在最近的作业(websockets...)中查看我的预定作业。

感谢您的帮助。

【问题讨论】:

    标签: salt-stack job-scheduling


    【解决方案1】:

    监听事件

    观看事件总线的最快方法是在你的 salt-master 上调用state.event runner

    salt-run state.event pretty=True
    

    触发事件

    可以使用event.send 执行函数从minion 向master 发送一个事件:

    salt-call event.send '__schedule_return' '{success: True, message: "It works!"}'
    

    反应器系统

    Salt 的反应器系统能够触发动作以响应事件。 Reactor SLS 文件和事件标签在主配置文件中关联(默认为 /etc/salt/master/etc/salt/master.d/reactor.conf)。

    在主配置部分“reactor:”中,您可以指定要匹配的事件标签列表。每个事件标签都可以有一个要运行的反应器 SLS 文件列表。

    # Master config section "reactor"
    reactor:
      # Match tag "__schedule_return"
      - '__schedule_return':
        # Things to it matches the tag
        - /srv/reactor/do_stuff.sls
    

    有关 salt 反应器系统的更多信息,请参阅有关 reactor system 的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多