Ansible:在服务器重启之前轮询日志文件以获取空闲时间

Ansible: Polling a log file for idle time before server restart

我希望 Ansible 跟踪日志文件并等待空闲时间 - 例如 XX 秒,日志在那段时间处于空闲状态。

如果日志在 XX 秒内没有空闲,请继续等待,直到我们有 XX 秒的空闲时间。

如果空闲时间结束,Ansible 将重启服务器。

空闲时间可以通过检查最后2条日志条目和它们之间的时间差来计算。

我如何使用 Ansible 实现这一目标?

如果你有一个以秒为单位打印时差的命令,你可以使用:

- shell: /opt/myscripts/log_difference.sh
  register: result
  until: result.stdout | int > 60
  retries: 5
  delay: 10

这将执行 log_difference.sh 直到超过重试次数或标准输出中的数字大于 60。

无需等待相隔 XX 秒的两个日志条目,而不必等到最后一个日志条目之后的 XX 秒,因为如果您的时间超过 XX 秒,下一次写入将符合您的条件。

并在此基础上,执行此操作(例如目的 XX = 5)

- find: paths="/tmp" patterns="logfile" age="5s" age_stamp="mtime"
  register: modified
  until: modified.matched == 1
  retries: 20
  delay: 5

只需确保路径和模式规范仅与您的日志文件匹配。