You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Ansible Playbook:内存使用率超90%时输出至自定义日志文件

调整Ansible内存监控Playbook实现日志写入需求

需求说明

  • 原Playbook会在控制台输出目标机内存使用率的“正常/异常”状态
  • 现在要改成:只有当内存使用率超过90%时,把相关信息写到名为utilisation的自定义日志文件里,完全不再往控制台输出

修改后的完整Playbook代码

---
- name: 监控内存使用率并记录异常日志
  hosts: all
  gather_facts: yes
  vars:
    mem_threshold: 90  # 触发日志的内存使用率阈值
    log_file: "/var/log/utilisation"  # 日志文件路径,可根据实际情况修改

  tasks:
    - name: 计算当前内存使用率
      set_fact:
        mem_usage: "{{ (ansible_memory_mb.real.total - ansible_memory_mb.real.free - ansible_memory_mb.real.buffers - ansible_memory_mb.real.cached) / ansible_memory_mb.real.total * 100 | round(2) }}"

    - name: 内存使用率超标时写入日志
      lineinfile:
        path: "{{ log_file }}"
        line: "{{ ansible_date_time.iso8601 }} - 主机: {{ inventory_hostname }} - 内存使用率: {{ mem_usage }}% (已超过阈值{{ mem_threshold }}%)"
        create: yes  # 日志文件不存在就自动创建
      when: mem_usage | float > mem_threshold

修改要点

  1. 替换输出方式:删掉原来控制台输出的逻辑(比如debug模块),改用lineinfile模块往日志文件里追加内容,避免控制台产生冗余输出
  2. 添加条件判断:通过when语句限定只有内存使用率超过90%时才执行日志写入操作
  3. 丰富日志内容:加入时间戳、主机名、使用率和阈值信息,方便后续排查问题
  4. 自动创建日志:lineinfile的create: yes参数可以确保日志文件不存在时自动生成

注意事项

  • 要保证Ansible执行用户对日志文件路径有读写权限,比如示例里的/var/log/目录通常需要sudo权限,执行Playbook时可以加--become
  • 如果需要覆盖旧日志而不是追加,可把lineinfile换成copy模块并设置force: yes,但监控场景一般推荐追加日志
  • 阈值mem_threshold和日志路径log_file可以根据实际需求调整

内容的提问来源于stack exchange,提问作者nihit kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:31:15