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
只需确保路径和模式规范仅与您的日志文件匹配。
我希望 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
只需确保路径和模式规范仅与您的日志文件匹配。