【问题标题】:Ansible: Restart Processes consuming memory > 75%Ansible:重新启动进程消耗内存> 75%
【发布时间】:2018-11-14 17:23:00
【问题描述】:

我是 Ansible 的新手。我的任务是使用 Ansible 自动化基础设施级别 1。

以上要求为:

  1. 登录服务器
  2. 查找消耗内存最多的进程(大于指定阈值)
  3. 重启有问题的服务。
  4. 如果上述步骤在非工作时间(指定)失败,则重新启动服务器,并且 等待警报清除或其他。
  5. 向 2 级/第 2 级组发送电子邮件以进行进一步的故障排除。

可能有助于完成上述任务的具体问题

  1. 如何获取内存消耗大于 50% 的所有进程和 迭代它们以优雅地重新启动服务?
  2. 如何使用动态服务模块实际重启服务 服务名称?

我无法根据内存消耗获取进程。我所能做的就是列出内存消耗最多的进程。我使用了以下命令:

ps -o pid --sort=-%mem | awk 'NR

【问题讨论】:

  • “基础设施级别 1”是什么意思?

标签: linux bash shell ansible


【解决方案1】:

您要执行的任务是“重新启动服务”。问题是确定您要启动的服务。完成后,您可以触发剧本(甚至可以触发任务的单个临时执行。

您需要进程名称和服务之间的映射。您的监控将引发一组违反您的 SLO 的流程并触发您的补救措施。让我们假设它是一个 Ansible 剧本。你需要一个看起来像这样的任务:

- name: Restart services which consume to much memory
  service:
    name: "{{ item }}"
    state: restarted
  with_items: bad_services

这意味着您有一个变量bad_services,它只是一个服务名称列表。您可以注册一些变量来确定该任务是通过还是失败,并适当地处理结果。它可以作为环境变量传递:

export BAD_SERVICES=$(get_bad_services.sh)
ansible-playbook fix_bad_services.yml -e bad_services=$BAD_SERVICES

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多