【问题标题】:Ansible: Restart Processes consuming memory > 75%Ansible:重新启动进程消耗内存> 75%
【发布时间】:2018-11-14 17:23:00
【问题描述】:
我是 Ansible 的新手。我的任务是使用 Ansible 自动化基础设施级别 1。
以上要求为:
- 登录服务器
- 查找消耗内存最多的进程(大于指定阈值)
- 重启有问题的服务。
- 如果上述步骤在非工作时间(指定)失败,则重新启动服务器,并且
等待警报清除或其他。
- 向 2 级/第 2 级组发送电子邮件以进行进一步的故障排除。
可能有助于完成上述任务的具体问题
- 如何获取内存消耗大于 50% 的所有进程和
迭代它们以优雅地重新启动服务?
- 如何使用动态服务模块实际重启服务
服务名称?
我无法根据内存消耗获取进程。我所能做的就是列出内存消耗最多的进程。我使用了以下命令:
ps -o pid --sort=-%mem | awk 'NR
【问题讨论】:
标签:
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